美文网首页IOS个人开发iOS开发资料收集区IOS基础与进阶
unity3D与iOS原生工程项目合并以及合并过程中的问题

unity3D与iOS原生工程项目合并以及合并过程中的问题

作者: 雨墨丫头 | 来源:发表于2017-01-10 17:47 被阅读4380次

由于公司项目的需要,需要将unity3D工程跟原生工程合并, 所以不得不接触unity3D, 本文是将unity3D导出的iOS代码移植到Xcode本地建的工程中, 上代码:

首先,总体来说,总的步骤分为两大块, 第一,你需要从unity3D中导出Xcode第二,你需要将导出的iOS代码部分移植到你想要的本地iOS项目中.

第一部分, unity3D导出Xcode项目

1.打开你的unity工程,然后点击上边菜单栏file中的build settings

1.png

2. 接着会弹出一个如下的框, 点击switch platform 选择iOS平台,

3. 点击player settings... 配置参数如下图

4. 配置完成后点击build, 等待完成,这个过程可能会时间长点,稍安勿躁, 完成之后是这样的

5.然后打开文件iOS文件夹是这样的,我们需要的重要核心的代码都在画红线的这几个文件夹中,所以,我们下面就需要把这几个画红线的文件夹拷贝到我们需要的iOS原生项目中.

第一部分导出Xcode工程已经完成,这部分很简单, 接着,我们就开始第二大部分,也是很容易出错的地方,尤其是配置需要注意.

第二部分, unity3D导出Xcode项目导入到原生的iOS项目中

1.Unity导出的工程中的bundleId要和你本地iOS项目的id一致

2.修改bit code为NO

3.删除Main.storyboard,代码设置控制器(方便切换window)

4.将Classes,Libraries,MapFileParser.sh拖入到项目(选中Copy items if needed,选中Create groups)

将Data拖入到项目(选中Copy items if needed,选中Create folder references)

注意:文件拖进工程的方式不完全一样,注意勾选的地方

5.添加framework(注意Optional的三个)

6.添加Header Search Paths和Library Search Paths

7.other C Flags -> -DINIT_SCRIPTING_BACKEND=1

8.添加User-Defined (UNITY_RUNTIME_VERSION版本号与导出工程的Unity版本号需要一致)

9.添加Run Script

10.把Unity/Classes/Prefix.pch的代码复制到新建的pct文件, 并把classes文件夹下的pct文件删除,注意,这里的删除并不是彻底的删除, 而是从列表中删除,选择中间这个, 以下步骤中所说的删除都是这个意思,请牢记哈!

11. 将Classes/main.mm全部内容复制到main.m 并把扩展名改为.mm

12. 修改UnityAppController.h

13.在AppDelegate.h .m中添加如下代码

到这里基本上已经完成从本地iOS跳转到Unity项目里了,接下来,是我在做的过程中遇到的问题.

1.Unknown type name 'UnityViewControllerBase'

解决办法就是把它改成UIViewController

2.iOS本地应用跳转unity的时候出现黑屏

原因是你的u3d工程集成了EasyAR插件,而这个插件下有个Assets/Plugins/iOS/EasyARAppController.mm,

@interface EasyARAppController : UnityAppController,这是整个app启动时的第一个controller,自己修改合并这个controller就OK了

或者是将EasyARAppController.mm的内容复制到你的自定义的子类中去,然后删除引用也是OK的

看下图

在UnityAppController.mm里这个方法中写

然后就OK了

以上就是全部了呦,欢迎大家指正, 多多交流!!!

// 转载请注明原地址呦!

相关文章

网友评论

  • 郝程序猿:请问一下,我原生项目已经集成了u3d项目,并成功启动了,但是怎么样做才可以在退出u3d项目后销毁对象呢?我调用了cleanup之后就直接崩溃了
  • Z小新:我原生的动画效果怎都失效了,导航栏跳转动画都没有了
    DeveloperTang:您好 我这边接入unity项目也遇到你描述的这个问题,push跳转转场动画消失,想问下你解决了这个问题没,恳请能指教下,谢谢!
  • 曼无世界:楼主,按照你的接入,但是编译报错了,cannot specify -o when generating multiple output files,请问大神知道这是什么原因吗
  • 半碗水的漩涡:你好,我这是报这个错:没找到具体怎么解决
    Ardemo/Classes/UnityAppController.mm:80:13: Property implementation must have its declaration in interface 'UnityAppController'
    unity 版本是2017.2.0f3 xcode 7.2
    许何健:@大好河山_ qq 634850447
    许何健:@大好河山_ 我和你一样 请问你解决了吗
    大好河山_:大牛晚上好,我想请问下,我在添加库的时候没有工程里面找不到MOBFoundation.framework这个库是怎么回事????麻烦指点一下,,谢谢了
  • a2f037f7bfbb:代码不复制出来就算了,等老子敲了半天后,编译出来一堆问题
    ebay_Happy:没教养的东西,活该你做不出来
    a2f037f7bfbb:@Tom萌 我说的是代码啊,不是配置
    Tom萌:配置都是xcode的常用配置,不贴代码也应该能敲出来,伸手党还那么理直气壮
  • 那年那月那花儿:大神, 我按照你的方法, 最后报错clang: error: linker command failed with exit code 1 (use -v to see invocation), 也不知道错在哪里, 能不能私下交流一下, +QQ:1641566581

    起个名字好难O0:@a0de0f231354 没有.应该是库的问题,或者是相关工程文件的问题
    那年那月那花儿:@起个名字好难O0 你现在解决了吗?交流一下, 我这卡半天了
    起个名字好难O0:我和是这个错误, 而且还有八十多个 referenced from: _main in main.o的错误
  • Lotheve:博主,按照你的步骤最后编译成功了,但是运行时报 was compiled with optimization - stepping may behave oddly; variables may not be available. 请问是何原因。unity版本:2017.1.1f1
    野生塔塔酱:@Lotheve 你好 我想请问一下你最后是怎么解决的呢? 我也是2017.1.1f1导出的项目,单独运行导出的项目没有任何问题 但是集成到iOS项目里面只要一运行unity部分代码就报这个警告然后crash
    Lotheve:@bloon 谢谢,我知道原因了哈。是由于unity生成libiPhone-lib.a时使用了编译优化引起的,这个问题只是报警告,不会报错,真正crash是另有原因。
    雨墨丫头:@Lotheve http://blog.csdn.net/ws1836300/article/details/52523083你看看这个,是不是因为这个原因
  • pro_cookies:第十条的pct文件是什么 笔误嘛 是想说pch文件嘛??
    hmj1993:同想问
  • t_fancy:大牛,按照你的步骤集成之后报错了,能加下我的QQ请教你个问题吗QQ:181708546,谢谢.
  • ssdfsj:麻烦给出demo可否?我用的unity536, unityappcontroller有些方法不一样
  • 0b9f16a04610:大神,能加个微信或QQ吗?通过Unity3d修改完模型,导入到ios端的时候出了问题了。
  • hcodeStyle:樓主 請問[_unityController setPaused:]方法是自己加的嘛?。我找不到這個方法
    wyz19900230:请问我也没找到[_unityController paused]这个方法,请问你是怎么解决的
    hcodeStyle:@bloon 感謝 ,已成功。
    我想問以下 。unity切換回到ios navi window介面 白屏 是什麼情況
    雨墨丫头:不是, 这个是UnityAppController里面的方法。
  • 彦_516d:楼主可否发个demo 参考学习一下 2558441887@qq.com 万分感谢
    雨墨丫头:我用的是公司的项目,抽时间写个给你发过去吧
  • Y_Swordsman:楼主。非常感谢你,通过这方式成功导入了。但是导入之后怎么用啊 ?
    1b47986ec341:楼主求demo ,qq:342528890@qq.com ,谢谢了
    Y_Swordsman:@bloon 我按照你的方法,可是只显示了window,没有跳到unity里去
    雨墨丫头:@严玉 文章的后面有进入unity页面的代码,你按照上面写就可以了
  • 请叫我攻城狮: 楼主能给个demo 吗 尝试了好久一直要报错
    雨墨丫头:@请叫我攻城狮 我用的是我们公司的项目,这个抽个时间我再写个demo发给你:smile:
  • 6651706c3b6d:原生应用真的可以接入unity3d啊,太棒了。
    雨墨丫头:@明子55 是的,可以的
  • 过过过客:mark
    雨墨丫头:@过过过客 嗯嗯,第四篇更新就使用这个文本形式了,一开始不知道:blush:
  • 我的大名叫小爱:可以的话就太棒了
    雨墨丫头:@我的大名叫小爱 其实没那么复杂的:blush:
    我的大名叫小爱:之前在网上找的好复杂 你这个看起来没那么长啊
    雨墨丫头:@我的大名叫小爱 嗯嗯,我这样做的就成功啦,你可以试试看:blush:

本文标题:unity3D与iOS原生工程项目合并以及合并过程中的问题

本文链接:https://www.haomeiwen.com/subject/uhmlvttx.html