Unity工程与iOS的那些事

一:大前提,需要把unity项目导出到xcode,需要注意的是player setting里面的Bundle Identifier,并且选择Scripting Backend 为IL2CPP,Target Devicce 我这里选择的是iPhone + iPad ,Target SDK 选择 Device SDK


Unity工程与iOS的那些事_第1张图片

二:接下来将unity导出的工程文件“转移”到我们的项目中


Unity工程与iOS的那些事_第2张图片


只需要上面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导出过程时对应的,当时我也有遇到这里的相关问题,总之先按照这样配置吧

Unity工程与iOS的那些事_第3张图片

(3)Other Linker Flags 目前我这边只有-ObjC

(4)Other C Flags 和 Other C++ Flags 

-DINIT_SCRIPTING_BACKEND=1

-DRUNTIME_IL2CPP=1  方便复制,你懂得


Unity工程与iOS的那些事_第4张图片

(5)有关于Prefix Header  我这里用的是unity原先的Prefix.pch,路径方面根据你自己的工程目录


Unity工程与iOS的那些事_第5张图片

(6)配置Header search paths


Unity工程与iOS的那些事_第6张图片

配置Library search Paths


Unity工程与iOS的那些事_第7张图片

(7)我看了很多文章,一些简主喜欢在User-Defined里面添加东西,我这边也没有添加。

四:下面说一下Build Phases里面的内容

1)在Filter中搜索main,把Compile Sources中把Classes里面的main.mm去掉(切记,我这里吃了这点很多亏)

2) framework 慢慢引入吧,注意一些optional点,我踏过的坑,让小伙伴们少走点弯路


Unity工程与iOS的那些事_第8张图片

3)添加一个Run Script 

"$PROJECT_DIR/MapFileParser.sh"(这个莫名其妙的文件用到了吧)

Unity工程与iOS的那些事_第9张图片

五:开始撸代码吧

1.将自己的main.m改成main.mm,然后把Classes中的main.mm内容复制到我们的main.mm文件中,然后将对应的内容改为


Unity工程与iOS的那些事_第10张图片

很多文章用的是constchar* AppControllerClassName ="AppDelegate";,但我这里遇到问题,所以我建议遇到问题用我的方式吧

2.找到UnityAppController.h文件


Unity工程与iOS的那些事_第11张图片

3.找到UnityAppController.mm文件

extern"C"voidezarUnitySetGraphicsDevice(void* device,intdeviceType,inteventType);

extern"C"voidezarUnityRenderEvent(intmarker);


Unity工程与iOS的那些事_第12张图片

重写shouldAttachRenderDelegate,这是防黑屏处理


Unity工程与iOS的那些事_第13张图片

4.AppDelegate文件


Unity工程与iOS的那些事_第14张图片


Unity工程与iOS的那些事_第15张图片

和很多文章一样,我也采取多个window的方式。感觉这种方式思绪比较清晰!

文章持续跟进。。。未完(之后将提到接入过程中遇到的问题)

你可能感兴趣的:(Unity工程与iOS的那些事)