美文网首页
iOS 和unity项目互相融合

iOS 和unity项目互相融合

作者: 浪呀么浪打浪 | 来源:发表于2019-06-23 21:43 被阅读0次

    iOS和unity互相融合大体上有两种方式:第一种是把unity工程导入到iOS工程中,这种方法需要在iOS工程中做配置。第二种是把iOS工程导入到unity工程中,这样不用做配置。不过两种方法各有利弊,需要根据自己的项目来进行选择。

    第一种:unity导入到iOS项目中

    融合之前的建议:一般unity导出的工程如上形式,拿到导出的工程之后,首先运行一下工程,看是否报错。如果是简单的bug,可以尝试解决,如果很复杂,也可以等融合好之后解决。因为我在融合的过程中发现有些错误融合到iOS项目中会自动消失。

    开始融合:1.导入文件

    需要导入Classes、Data、Libraries、MapFileParse.sh这四个文件。导入Classes、Data、Libraries的时候选择Create groups:

    导入Data的时候选择Create folder references:

    导入完成之后工程的目录如下:

    2.配置iOS工程的环境,以unity工程中的环境为参考

    2.1添加依赖库

    注意:添加libiconv.2.dylib 方法

    Add other 然后全局搜索command+shift+G 然后输入/usr/lib/libiconv.2.dylib查找

    2.2添加头文件和库的路径

    2.3 其他一些配置

     Other C Flags  

     Other Linker Flags  

    Language

    pch文件

    Enable Bitcode

    2.4 添加用户定义

    注意:unity的版本好要根据自己项目中来填

    3.项目中做一些修改

    3.1     pch 文件,导入#import "UnityAppController.h"

    如果需要和项目中原本的pch文件融合,直接把原项目中的pch文件复制过来就行了。

    3.2 修改main.m 

    把unity中的main.mm中的内容全部复制到iOS项目中的main.m中,并把main.m改为main.mm,并删除unity中的main.mm文件

    3.3 修改#import "AppDelegate.h"

    AppDelegate.m文件

    3.4 修改UnityAppController.h

    当有需要实现的方法的时候,在UnityAppController.m实现,例如关闭unity 界面。

    以上就是把unity工程导入到iOS工程中。

    第二种:iOS导入到unity项目中

    这种方法需要先跑通unity的工程,然后把iOS项目中的文件导入进来,不要忘了AppDelegate,然后进行调试解决出现的错误。

    最后,记录一些遇到的bug或者注意事项

    1.unity和iOS交互问题

    2.

    终端输入chmod +x /      path(MapFileParser.sh文件的路径)解决了该问题

    3.

    (1)、首先排查了是否有名字重复的文件;

    (2)、检查是否在#import头文件的时候,不小心把.h写成了.m。(这个很容易被忽略,谨记!)

    4.

    重写函数

    5./clang:-1: linker command failed with exit code 1 (use -v to see invocation)

    注意:libiconv.2.dylib 这个的添加方法

    Add other 然后全局搜索command+shift+G 然后输入/usr/lib/libiconv.2.dylib查找就可以了

    到这里为止了,如果哪里有错误的,请帮忙指出来,如果还有疑问不明白的,可以发消息询问。

    6.Functions that differ only in their return type cannot be overloaded

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

    7.__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的

    相关文章

      网友评论

          本文标题:iOS 和unity项目互相融合

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