unity与iOS合并

关于unity导出工程与已有iOS工程合并网上面已经有很多的教程,但是还是要记录一下自己的经历过程。从最基本的说明,面对刚接触unity的小白,力求大家看到过后一次性合并成功。所用unity版本5.3.5p8(没什么关系),xcode版本7.3.1


再说一遍新版的 unity 和 xcode 不需要删除下面说的一些文件引用。直接引用就好了,而且好像也没办法批量删除部分文件引用。😁(unity 2017版的没试过)


       看到很多人问我怎么配置不成功啊,这里、那里错❌。我都晕了,现在说一下啊,我上面已经全说了,再配置不成功的话,可以参开我的 配置demo,里面的 unity 文件我已经移除,下载过来以后要按照要求将你的 unity 文件移进去,并修改少量代码,就可以了,报错的话下面有部分解决方案。(新版最好直接将之前的文件删除(删到垃圾推里),重新添加文件)


配置下载链接这个是我的网盘链接链接,大家可以下载,我也传到cocoachina 上面了,不过要审核。


1,怎么导出unity的iOS工程

- 1.1首先在unity打开unity工程,然后点击file->buld setting

准备导出开始


- 1.2 然后在弹框出来,如果当前默认不是iOS平台就切换到iOS平台。确认平台以后就点击player setting按钮,进入具体的配置界面。

平台切换

- 1.3 进入具体设置Other Settings,图上面画的就是设置的东西,il2cpp这个不要忘了设置,还有运行方式,最低版本支持。设置完成直接building导出。

基本配置

- 还有一个问题就是游戏开发的时候(虽然我不是做游戏开发的)的可能会碰到关于AOT的问题,其实就是在这个位置设置好就行了,具体的网上都有,直接搜索AOT引起的crash就找得到,虽然没解决我的问题。

AOT-crash


2,开始进行导入工程前的准备

打开unity已经导出的工程,看看里面的库是否是支持目前版本的库,然后再运行一下,基本是不会出问题的。如果出现错误的话应该是需要把encode设置为no,还有在building setting上设置新的编译参数

添加设置

如果unity导出的工程可以完整的在模拟器或者真机上运行,那么这个导出的工程上的配置就是对的,然后可以在需要导到目标工程里面进行copy UNITY里面的设置。

3,开始导入unity工程


选中需要用的资源文件

- 3.1 在unity导出的工程中,选中这些资源文件,并将其拷贝到目标工程所在目录

拷贝到目标工程所在目录

- 3.2然后打开目标工程,开始添加文件引用,添加的方式不一样,Class和Libraries文件夹用Create Groups,而Data用Create folder.. ,不要选错

添加后的样子

这个大家要注意啊::::!!!!


# Classes 的 Native在移到工程中的时候可能会缺少部分文件,Classes文件从导出的工程复制粘贴到自己的项目会少文件,这个很坑。

新版的的 unity 好像没有 MapFileParser 这个文件,这没关系的。



4 添加完成后,开始删除一部分引用(不是直接删除啊),后面所有的删除都是删除引用。

###(新版本不删除引用!!!(我后面用的5.5.1f1))

- 4.1先删除引用libraries里面的libil2cpp文件夹,然后再删除Classes里面的Native文件夹里面的所有.h文件

.h删除

 - 4.2然后再将classes里面的main.mm文件内容全部拷到自己原有的main.m文件中再删除引用,并将AppControllerClassName后面修改成AppDelegate,自己修改 main.m->main.mm。将.pch文件里面的东西放到自己的pch文件中或者就用它的也可以,并添加#import"UnityAppController.h",但是pch文件路径别忘了添加。

pch文件
修改main.mm

- 4.3如果出现一些运行报错那就把//UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String:AppControllerClassName]);替换掉。

- 4.4然后就是点击工程进入设置界面,主要设置的地方有三个,怎么设置参考导出的unity工程。。。

位置

第一个主要是库的添加,第二个是一系列的配置,最好要完全copy里面的设置(看清楚瞪大眼睛,里面的引用资源路径别写错了啊)简略的写写,照着unity导出的工程配置就可以了。


资源路径


这个一定要有的

第三个是一个run


添加run


- 4.5这样配置完了,command+b编译时在 UnityAppViewcontroller 里面应该会出现不识别UnityViewControllerBase,把它直接改成UIViewController。

然后在AppDelegate中添加


AppDelegate.h


AppDelegate.m


.m

- 4.6这里写完后在UnityAppController.h里面修改


修改UnityAppController

5,启动unity界面了

- 在需要启动的界面调用

#进入调用。

[(AppDelegate*)[UIApplicationsharedApplication].delegate  showUnityWindow];//启动

UnityPause(false);

#退出调用。(退出时用 unity 内部自己写的脚本调用外部自定义的 C 方法,将下面的代码放进去。不会的话就去搜!!!)

[(AppDelegate*)[UIApplicationsharedApplication].delegate  hideUnityWindow];//隐藏

UnityPause(true);


就可以启动unity了。

添加一个陀螺仪脚本,使用这个脚本后在unity 里面有很棒的效果,制作的 GIF 图看着有点卡,其实很流畅的哦:

陀螺仪脚本


写到最后终于写完了,主项目里面的设置要参考unity导出的工程设置。

启动问题:

因为加载方式的原因,导致APP 整体启动速度较慢,内存峰值上升较快,所以设置了自己主动触发 unityController 的启动。这次改动是将之前在 didFinishLaunching里面的启动代码放到 showUnityWindow里面,其他保持不变。目前 unity 资源占用问题让 unity 工程师做,加载空的 unity 场景增加内存只有15M 左右(已测试,退出时切换到空的场景可以大幅减少占用内存),另外压缩图片大小可以大度降低内存占用量。

解决 unity 内存占用问题也可以参考:Unity 3D 内存太大问题解决方案

代码如下:


报错问题:

 1,一些 cpp 文件之类的找不到,应该是资源路径不对,或者文件丢失,去 finder 里面看一哈。

2,Functions that differ only in their return type cannot be overloaded

        》解决办法:Enable Strict Checking of objc_msgSend Calls改为NO

3,__weak typeof(self)wSelf = self报错:- A parameter list without types is only allowed in a function definition. A corresponding warning tells me that __weak only applies to Objective-C object or block pointer types;type here is 'int'

     》解决办法:Xcode-> Build Settings-> C Language Dialect修改配置,C99改为GNU99,C99是不包含typeof的

4,cString报错

报错详情

      》解决办法:Setting "Always Search User Paths" to "No" in the project settings fixed the build issues.

5,dyld: Symbol not found: _AbstractEventData_Reset_m15186946类似于这种错误

》 1):我是之前融合了简单的unity导出工程OK的情况下,再次融合新版的导出工程时报的错误(我的再次融合方式是,直接替换之前导入的资源文件),可能是工程里面引用到的某个方法或者文件和之前的不同,所以简单的替换资源文件导致出现的dyld: Symbol not found错误情况,大家如果出现这种错误可以试试,不需要更改之前的配置,只需要删除之前老的资源文件(在 xcode 里面删除引用),重新引入最新的资源文件。

  》2):可能是一些资源Framework设置不是optional

后期添加的:只能帮到这了,毕竟我也好久没在做这方面的了。

- 其他整合交互方案看-》www.jianshu.com/p/db88ffd57168

- 如果遇到动画消失-》www.jianshu.com/p/baabd47434ca

- 如果实用 easyAR 遇到黑屏-》www.jianshu.com/p/f98bcfe09dc7

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,833评论 25 707
  • 米兰退出了L.L魔法社团,她觉得心情很沉重。为什么没有人相信她呢? 这几天,米兰面如灰土,极力的挽回一切。可每次都...
    Melany阅读 181评论 0 0
  • 院子里的小草绿了 园子里的桃花开了 马路边的树苗也长芽了 天空中不时有小鸟飞过 偶尔会叽叽喳喳地叫个不停 像是在唱...
    大漠郡主阅读 509评论 0 1
  • 上周末听叶武滨老师讲易效能时间管理2阶课,最后一段是关于生命力,其中一节讲到他和儿子到美国的某个城市旅游,那个城市...
    王二王婆阅读 653评论 2 5