Unity与iOS交互(一):构建XCode工程

开发环境:XCode 9.2 , Unity 2017.1.3

在使用Unity开发游戏时,我们经常会被要求接入各种SDK,例如微信支付、微信分享、推送等。而大部分Unity开发人员并没有iOS相关开发经验,所以接原生SDK一直以来都是一件很头疼的事情,不过当我查阅各种文档,看了各种教程之后,发现接iOS的SDK还是比较简单的一件事情。

所以这个系列文章将会介绍我接入SDK过程中学到的知识、要点及过程。

构建过程

在Unity官方文档中有专门的iOS平台开发文档,阅读这些文档是非常有帮助的。这一篇我将先介绍iOS平台的构建及生成的XCode工程结构。这两点都是Unity官方文档中的内容。

在点击Build构建iOS工程时,如果不是首次构建,则会弹出一个警告:

iOS构建警告

iOS构建警告

当我们不勾选Enable replacesshi时,Replace按钮是不可用的。官方文档中也有介绍ReplaceAppend的区别

  • replace – 所有目标文件夹的文件将被移除,并且生成新的内容
  • append – “Data”,”Libraries”和项目根目录将被清理并放入新生成的文件。XCode项目文件将会根据Unity中的更改被更新。XCode工程中的”Classes”文件夹是存放本机代码的安全场所,但建议定期进行备份。追加模式仅支持使用相同Unity iOS版本生成的现有XCode项目。

所以在我们构建XCode工程后,我们所有的Info.plist、Build Settings等的修改,在Append模式下都不会被覆盖,在后续接SDK时,也会少很多麻烦。但如果你使用了不同版本的Unity来构建项目,那么构建时将只能Replace,之后所有的修改需要重新再来一遍,如果SDK多或者修改操作多的话,这会是一件很麻烦的事情。不过,我们还有别的办法来解决这个麻烦:使用XUPorter。XUPorter的使用会在后面的文章中介绍。

工程结构

构建后的XCode工程应该是下面这样的:

Unity构建后的XCode工程结构

Unity构建后的XCode工程结构

对我们来讲,”Classes”、”Libraries”文件夹和Info.plist文件是最常用到的。其余目录及文件可以参考Unity官方文档中XCode项目结构的介绍

在”Classes”文件夹中,有一个名为UnityAppController.mm的文件,这个文件是main.mm中设置的程序的入口。通常接入微信SDK或极光推送时,都需要在这个文件中加入代码,初始化SDK等。而官方文档中指出,我们可以扩展这个类,在下一篇文档中我会介绍扩展UnityAppController.mm的方法。

“Libraries”文件夹中,存放着我们在Unity中放入的原生代码,当在Unity中你将原生代码放入Plugins/iOS文件夹中时,这些代码会被拷贝到”Libraries”文件夹中。而在Plugins/iOS中放入原生代码文件,也是Unity官方文档中介绍的iOS插件使用方法。

Info.plist中存放的项目配置,接入SDK时也会需要修改的,可以按照SDK的文档来修改此文件,也可以阅读之后的XUPorter的使用教程来在Unity的代码中修改此文件。

通过这篇文章我们可以看到,Unity官方文档中有各种你需要的知识,不过遗憾的是文档没有中文化,而且各种知识在不同的文章里,很容易忽略,这个专题的目的,也就是为了帮助大家使用这些只是来更加容易的接入SDK。

本文是全系列中第1 / 4篇:Unity与iOS交互