小斑Unity跨平台技术分享Unity游戏开发入门

Unity 5.6配置到Swift 3工程中

2017-04-22  本文已影响237人  鞋底没纹易摔跤

参考配置文章:

Swift3.0融合Unity

http://www.jianshu.com/p/e8217896d6ff

建议按上面的文章配置一次,配置不成功或者报错时再来参考这篇文章

先到该网址下载需要文件(ios-unity5-master)并解压

https://github.com/blitzagency/ios-unity5

里面文件是


Unity导出工程:

在Unity网站下载最新版的Unity(本次配置成功是选择免费的)

安装Unity并验证账号

官网:https://unity3d.com/cn/

可在这个网站下载模型Unity模型:(登录账号选择那些0积分的下载,需要筛选unity模型)

http://www.cgrealm.org/

模型下载后打开对应的unity模型文件

然后选择New Unity Project

打开Unity后如果此处没有模型文件(即空白,下图是有模型文件)就打开菜单

File -> Open Sence把下载的模型文件导入进来

然后打开这几个模型文件,找到里面的模型(不是贴图),拖到界面中

然后开始导出Unity的Xcode工程

File -> Build Settings

选择iOS,然后如果左下角Switch Platform按钮可点击就点击,作用就是转换成iOS平台(下次再选择iOS就不能点击了)

然后右侧Run in Xcode as有Debug和Release两种选择,此处选择Release

选好之后点击Player Settings(不是Build!!!),弹出以下界面。选择Other Settings栏。此时可以先把Build Setting界面关掉


可按如上配置

提示:

1.Bundle Identifier处填你项目的Bundle Identifier

2.Target SDK有两个选项Device SDK 和 Simulator 网上说前者是真机,后者是模拟器。没试过选择Simulator。

然后回到Build Setting中,如果关闭了再打开就行了,上面配置不会变的。

点击Build。填写导出的文件名和导出路径后点击save。导出时间有点长(电脑配置高的话很快)。

导出完毕后可以关闭Unity了。

打开导出的文件,内容如下


实际需要的文件是Classes,Libraries和Data。其他暂时没用到(包括Unity的Xcode工程)。后面说的项目或者工程都是指自己的Swift工程。

下面开始配置自己的Swift工程:

1.在开始配置之前先在自己工程中配置好pch文件

2.导入一下依赖库,按照下图添加(最好不要重复导入)

dylib类型的库添加方法:

Build Phases -> Link Binary With Libraries —> + , 在对话框中点 Add Other, 然后在新的对话框用快捷键Command+Shift+G打开新的Folder对话框,输入/usr/lib/,然后点Go,在新弹出的dylib库目录选择libc++.dylib并添加。

添加完毕后建议copy一份备份的工程,以防出错后重新添加。

个人配置过程:

1.配置好pch,导入相关的库(如上面所说)

2.导入下载的那些.mm文件, .h文件(build一下就可能开始报错了)

3.Project->Info切换为Unity后pod install,并在Unity.xcconfig里面添加相关代码

4。(1)配置Target->build setting->User-Defined的Unity版本和UNITY_IOS_EXPORT_PATH路径。(2)在Build Phases添加Run Script并且配置其中的内容。(3)配置Target->build setting 的 Header Search Paths 和 Library Search Paths路径。(不存在的路径暂时不要添加,否则后面可能会报这个路径不存在的错误)

5.导入Classes,Data,Libraries文件夹到自己的工程,路径要和上面配置的路径一致。

6.配置main.swift,修改main.mm等相关内容

7.完成后clean一下再build一下。如果报错可以按照下面的错误集合参考一下。

详细的配置按开头的 “Swift3.0融合Unity” 文章进行配置就行了。配置之前先了解一下下面3个提示

提示:

1.Classes,Library,Data拉到工程里面去后,打开Classes,把里面的pch文件的内容复制到自己工程的pch文件中,然后把Classes里面的pch文件删除掉(删除掉后要确认一下Build Setting里面pch的路径是不是正确)

项目的pch文件

2.如果自己的工程已经存在桥接文件,就不需要把UnityBridge.h桥接文件拖进项目中,直接把UnityBridge.h里面的内容(如下面红框中的内容)copy到自己工程的桥接文件中。


3.没有UNITY_IOS_EXPORT_PATH等字段

如果Targets->Build Setting->最下面的User-Defined里面没有UNITY_IOS_EXPORT_PATH等字段的话就把Project->Info -> Configurations里面的文件改为Unity。然后打开命令窗口cd到项目有Podfile的文件夹处(直接拖入Podfile的上层文件夹路径就好了)。输入pod install回车等配置完成后就会出现这些字段了。

替换为Unity

配置完成后就会有以下字段


pod install后记得在Unity.xcconfig里面添加以下内容:(“项目的名字”改成你swift项目的名字)

#include"Pods/Target Support Files/Pods-项目的名字/Pods-项目的名字.debug.xcconfig"

#include"Pods/Target Support Files/Pods-项目的名字/Pods-项目的名字.release.xcconfig”

注意:UNITY_RUNTIME_VERSION填的是Unity的版本,并不是下面的version



错误集合:

部分错误都可以在开头介绍的文章里或者网上找到答案

1.提示@throw的错误:Targets->Build Settings -> 搜索Enable Objective Exceptions -> Yes

2.提示__weakSelf的错误:Targets->Build Settings -> 搜索C Language Dialect   c99改成GNU99

3.代码UnityParseCommandLine处报错  ->该行代码改成UnityInitRunTime

4.nullptr错误:参考开头介绍的文章后面的评论

5.diff的错误


在Unity.xcconfig文件里添加原来的xcconfig文件路径

#include"Pods/Target Support Files/Pods-项目的名字/Pods-项目的名字.debug.xcconfig"

#include"Pods/Target Support Files/Pods-项目的名字/Pods-项目的名字.release.xcconfig”

Unity.xcconfig文件中

6.如果解决了5的问题(上面的问题)后报Pods里面第三方库的某个.h文件找不到(#import “???.h” not found)问题且该.h文件实际是存在的话,可以在Target->Build Setting搜索header search,如下图,在Header Search Paths里面添加该.h文件的上层路径。


如果该问题解决之后报更多的和这个.h文件所在的第三方库有关的其他文件问题,可以在Targes -> General最下面点击+号,把这个库对应的framework添加到现在的库里面去。



7.custom_unity_inif错误 或者 UnityAppController.h错误

如果项目本来就存在桥接文件,就把UnityBridge.h里面的#import文件内容放到自己项目工程的桥接文件里面去。

如果项目没有桥接文件,最好新建桥接文件。(虽然也可以使用UnityBridge.h当做桥接文件)

8.弹出很多错误的arm64错误(比如201个错误):

先在Targets->build settings搜索other Linker Flags,在里面添加$(inherited)

clean后再Build如果还报错就可能和运行设备有关。

在Unity导出Xcode工程时在Player Settings弹出的界面中选择的是Device SDK,则自己swift项目的运行设备要选择真机(插入真机)。如果选择的是Simulator则选择模拟器(没试过这个Simulator)。

再clean后Build一下可能这个错误就没了。

9.弹出很少错误的arm64错误:


这个错误找了很久没找到解决方法,英文的网站也找了不少。本次解决的办法是重新配置Unity到Xcode工程(个人是因为发现UnityBridge.h文件和项目的桥接文件都存在项目中,而且UNITY_RUNTIME_VERSION字段填的是1.0,并不是Unity实际的版本号,所以果断重新配置,发现这个问题竟然消失了,这个问题我弄了一天一夜,虽然网上有挺多相关解决办法,但都不适用我的工程)。

上一篇下一篇

猜你喜欢

热点阅读