工程融合分三部分,unity部分导入目标工程,使用的三方库导入,代码导入。只导入unity部分的话 看第一部分就够了。
一,unity 部分导入
AR工程部分此处使用ARProject代称 ,目标工程使用iOSProject代称
1.Unity导出的工程中的bundleId要和你本地iOS项目的id一致
2.删除Main.storyboard,代码设置控制器(方便切换window)
3.将ARProject中的Classes,Libraries,Data三个文件夹和MapFileParser.sh文件拷贝入iOSProject根目录(目录路径可以自己修改,只要和后面的Search Paths配置一致就行)。如图效果:
4.将Classes,LIbraries,MapFileParser.sh导入工程使用Create groups,将Data文件夹导入工程使用Create folder references。导入结果如下:
5.添加runScript"$PROJECT_DIR/MapFileParser.sh"
6.添加搜索路径,(注意双引号的中英文):
Header Search Paths添加
"$(SRCROOT)/Classes"
"$(SRCROOT)"
$(SRCROOT)/Classes/Native
$(SRCROOT)/Libraries/bdwgc/include
$(SRCROOT)/Libraries/libil2cpp/include
Library Search Paths添加
$(inherited)
"$(SRCROOT)"
"$(SRCROOT)/Libraries"
7.添加预处理文件,如果已经有了,就合并,删除其中一个
8.添加-DINIT_SCRIPTING_BACKEND=1 注意 =1 中间没有空格否则会报错
10.修改Mismatched Return Type为YES
11.修改bitcode选为NO
12.在build setting里面添加User-Defined
UNITY_RUNTIME_VERSION 5.3.0f4
UNITY_SCRIPTING_BACKEND il2cpp
GCC_USE_INDIRECT_FUNCTION_CALLS NO
GCC_THUMB_SUPPORT NO
13.unity启动所需要的链接库如下图:
二、添加第三方库
1.将ARProject中的service文件夹拖入iOSProject工程中,如果工程中已经有了就不用添加了。
2.添加依赖库,依赖库如下图(依工程中的库为准):
三、添加逻辑代码和图片资源
1.将imageSource、iOSUnityMutually、MZLARSDK.framework拖入工程里 其中imageSource中的Archive文件夹使用Create folder references添加入工程
2.RegexKitLite、Reachability、TTDFileWriter、TTDFileReader、BDVRSConfig修改-fno-objc-arc
3.other Linker Flags 添加,-ObjC、-licucore
4、在plist文件里 要开启定位(支持后台定位或者使用时定位)、相机、相册、http请求的权限
四、完成之后编译看是否报错。
1、修改的main.m
复制Classes/main.mm内容到main.m,修改main.m的扩展名为.mm,删除Unity生成main.mm。这里整合的时候,合适就好,启动的delegate仍旧不变,只是添加其中的初始化函数。
2、在appdelegate中导入头文件#import"UnityDelegateManager.h"。然后在delegate的各个代理方法添加对应的名称一样的unity代理方法,如下图:
3、调用ar的方法是[UnityDelegateManager startARWindow]; 关闭方法是[UnityDelegateManager stopARWindow];
4、如果编译不报错,但是不能运行,就把service文件夹下的第三方库删掉重新添加一遍。