关于Unity生成的工程导入原生工程

工程融合分三部分,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配置一致就行)。如图效果:

关于Unity生成的工程导入原生工程_第1张图片

4.将Classes,LIbraries,MapFileParser.sh导入工程使用Create groups,将Data文件夹导入工程使用Create folder references。导入结果如下:

关于Unity生成的工程导入原生工程_第2张图片

5.添加runScript"$PROJECT_DIR/MapFileParser.sh"

关于Unity生成的工程导入原生工程_第3张图片
关于Unity生成的工程导入原生工程_第4张图片

6.添加搜索路径,(注意双引号的中英文):

Header Search Paths添加

"$(SRCROOT)/Classes"

"$(SRCROOT)"

$(SRCROOT)/Classes/Native

$(SRCROOT)/Libraries/bdwgc/include

$(SRCROOT)/Libraries/libil2cpp/include

关于Unity生成的工程导入原生工程_第5张图片

Library Search Paths添加

$(inherited)

"$(SRCROOT)"

"$(SRCROOT)/Libraries"


关于Unity生成的工程导入原生工程_第6张图片

7.添加预处理文件,如果已经有了,就合并,删除其中一个

关于Unity生成的工程导入原生工程_第7张图片

8.添加-DINIT_SCRIPTING_BACKEND=1  注意 =1 中间没有空格否则会报错

关于Unity生成的工程导入原生工程_第8张图片

10.修改Mismatched Return TypeYES

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

关于Unity生成的工程导入原生工程_第9张图片

13.unity启动所需要的链接库如下图:

关于Unity生成的工程导入原生工程_第10张图片

二、添加第三方库

1.将ARProject中的service文件夹拖入iOSProject工程中,如果工程中已经有了就不用添加了。

2.添加依赖库,依赖库如下图(依工程中的库为准):

关于Unity生成的工程导入原生工程_第11张图片
关于Unity生成的工程导入原生工程_第12张图片

三、添加逻辑代码和图片资源

1.将imageSource、iOSUnityMutually、MZLARSDK.framework拖入工程里 其中imageSource中的Archive文件夹使用Create folder references添加入工程

关于Unity生成的工程导入原生工程_第13张图片

2.RegexKitLite、Reachability、TTDFileWriter、TTDFileReader、BDVRSConfig修改-fno-objc-arc

关于Unity生成的工程导入原生工程_第14张图片

3.other Linker Flags 添加,-ObjC、-licucore

4、在plist文件里 要开启定位(支持后台定位或者使用时定位)、相机、相册、http请求的权限

四、完成之后编译看是否报错。

1、修改的main.m

复制Classes/main.mm内容到main.m,修改main.m的扩展名为.mm,删除Unity生成main.mm。这里整合的时候,合适就好,启动的delegate仍旧不变,只是添加其中的初始化函数。

关于Unity生成的工程导入原生工程_第15张图片

2、在appdelegate中导入头文件#import"UnityDelegateManager.h"。然后在delegate的各个代理方法添加对应的名称一样的unity代理方法,如下图:

关于Unity生成的工程导入原生工程_第16张图片

3、调用ar的方法是[UnityDelegateManager startARWindow]; 关闭方法是[UnityDelegateManager stopARWindow];

4、如果编译不报错,但是不能运行,就把service文件夹下的第三方库删掉重新添加一遍。

你可能感兴趣的:(关于Unity生成的工程导入原生工程)