一:大前提,需要把unity项目导出到xcode,需要注意的是player setting里面的Bundle Identifier,并且选择Scripting Backend 为IL2CPP,Target Devicce 我这里选择的是iPhone + iPad ,Target SDK 选择 Device SDK
二:接下来将unity导出的工程文件“转移”到我们的项目中
只需要上面5个文件/文件夹,且最后两个文件无需引入到工程中,只要能在工程目录中能找到就可以。这里需要注意的是Data文件是Create folder references,其他的两个(classes,Libraries)是Create groups。这样,第二步就结束了
三:项目中添加一些配置文件
1.因为我的项目设计AR功能,需要使用相册的功能,所以在TARGETS->自己的工程名称->Info添加 Privacy - Camera Usage Description 相机使用权限 当然,App Transport Security Settings也添加上吧
2.Built Settings 中添加的内容较多
(1)Enable Bitcode->NO
(2)Architectures内容如下,unity导出过程时对应的,当时我也有遇到这里的相关问题,总之先按照这样配置吧
(3)Other Linker Flags 目前我这边只有-ObjC
(4)Other C Flags 和 Other C++ Flags
-DINIT_SCRIPTING_BACKEND=1
-DRUNTIME_IL2CPP=1 方便复制,你懂得
(5)有关于Prefix Header 我这里用的是unity原先的Prefix.pch,路径方面根据你自己的工程目录
(6)配置Header search paths
配置Library search Paths
(7)我看了很多文章,一些简主喜欢在User-Defined里面添加东西,我这边也没有添加。
四:下面说一下Build Phases里面的内容
1)在Filter中搜索main,把Compile Sources中把Classes里面的main.mm去掉(切记,我这里吃了这点很多亏)
2) framework 慢慢引入吧,注意一些optional点,我踏过的坑,让小伙伴们少走点弯路
3)添加一个Run Script
"$PROJECT_DIR/MapFileParser.sh"(这个莫名其妙的文件用到了吧)
五:开始撸代码吧
1.将自己的main.m改成main.mm,然后把Classes中的main.mm内容复制到我们的main.mm文件中,然后将对应的内容改为
很多文章用的是constchar* AppControllerClassName ="AppDelegate";,但我这里遇到问题,所以我建议遇到问题用我的方式吧
2.找到UnityAppController.h文件
3.找到UnityAppController.mm文件
extern"C"voidezarUnitySetGraphicsDevice(void* device,intdeviceType,inteventType);
extern"C"voidezarUnityRenderEvent(intmarker);
重写shouldAttachRenderDelegate,这是防黑屏处理
4.AppDelegate文件
和很多文章一样,我也采取多个window的方式。感觉这种方式思绪比较清晰!
文章持续跟进。。。未完(之后将提到接入过程中遇到的问题)