最近公司要开发新项目,项目中要集成Unity工程,来展示Unity 3D模型,本人也是在前辈的基础上摸索前行,现在把这些知识点归纳整理,做一个记录来方便查阅!首先要使用Unity导出Xcode工程包,如下图所示:
1、导出Xcode工程
(1)导出时需要先设置好Bundle Identifier,这个bundleID是要和iOS项目一致的,Target SDK可以选择真机或者模拟器,根据实际情况选择!minimum iOS Version是工程支持的最低版本,根据实际情况设置!
(2)设置好配置信息后,选择File --> Build Settings,选择iOS下的relesse或者debug版本,然后Build,导出完成!
2、将Unity项目文件复制到到iOS项目根目录下,主要有四个文件,Classes,Data,Libraries,MapFileParser.sh,(前三个是文件夹)。
(1)注意这里是在app的根目录下,右键“Add File to ...”,选中三个文件(文件夹),记住在options里面勾选“Create groups”,“Copy items if needed”就不用选中了。对Classes,Libraries,MapFileParser.sh添加如下图:
(2) 同样是在app的根目录下,右键添加文件,选中Data文件夹,但是这里的options,是选“Create folder references”,记住了,别选错了
3、删除项目文件.h文件和libil2cpp的引用。
(1)在iOS项目中,找到Classes->Native目录,将目录下的.h文件全部删除引用,注意只是.h,因为里面还有.cpp,这里只需要在Native文件夹上右键选择Sort by Type就可以把.h,.cpp分开了。
这里只是删除引用,选择这里面估计有几千个文件慢慢等一下。
(2)找到Libraries->libil2cpp,删除文件引用,同上面选择Remove References
4、配置Xcode工程环境,运行unity项目
(1)添加引用库
(2)添加头文件,库搜索路径
在项目TARGETS->Build Settings搜索Search。
在Header Search Paths下添加以下路径
"$(SRCROOT)/Classes"
"$(SRCROOT)"
$(SRCROOT)/Classes/Native
$(SRCROOT)/Libraries/bdwgc/include
$(SRCROOT)/Libraries/libil2cpp/include
(3)配置Other Linker Flags
在Other Linker Flags下添加以下关键字:
-weak_framework
CoreMotion
-weak-lSystem
(4)C,C++,ObjC环境设置
注:这里的Prefix Header自由设定,如果使用Unity工程的pch文件,这里应该是Unity工程pch文件的相对路径;如果使用自建工程的pch文件,那么这里应该是自己项目的pch文件的相对路径,相对路径的具体设置可以百度搜索。
(5)添加User-Defined设置
分别添加键值对:(直接把unity工程里的拷贝过来,第三项版本号一致)
GCC_THUMB_SUPPORT -> NO
GCC_USE_INDIRECT_FUNCTION_CALLS->NO
UNITY_RUNTIME_VERSION->5.6.5f1
UNITY_SCRIPTING_BACKEND->il2cpp
(6)添加Run Script
在Build Phases页面下左上角的加号,选择New Run Script Phase,然后在Run Script进行配置.
Notice: 再说一遍,以上的所有项目TARGETS的配置,都可以在Unity导出的Xcode项目中参照着修改配置!!!
这个过程比较琐碎复杂,我自己做了好几次才配置成功,多做几遍就熟悉了,其实不难的,而我的项目中还要集成CAD图纸浏览,和unity环境配置起了冲突,试了好几次都没找到原因,后来把iOS工程导入unity工程倒是不冲突了,但是只是暂时的做法,后续我会查找的原因分享给大家!