如何将Unity游戏构建到iOS设备

来源:互联网 发布:淘宝宝贝关键词怎么刷 编辑:程序博客网 时间:2024/06/10 17:17

介绍

本文章将构建一个示例Unity项目到iOS设备进行测试(非常详细,简直细到了每个操作,每个情况),原文出自Unity官网教程Building your Unity game to an iOS device for testing,但略做修改。
本文章不包含构建一个可分发到其他设备的游戏,或向App Store提交游戏。
自2015年Xcode 7发布以来,可用免费的Apple ID来构建应用(包含使用Unity制作的游戏)。在此之前,只有付费的Apple Developer Program(苹果开发者计划)的成员才可以这样做。免费选项是有限的:不能使用Game Center或In-App(内购)等服务,而且不能提交游戏到App Store。但是,可以使用免费的Apple ID在iOS设备上测试你的游戏。

环境

  • Mac Pro系统版本:macOS Sierra 10.12.6
  • Xcode版本:Xcode 8.3.3
  • Unity版本:Unity 5.4.1
  • iphone6 10.3.3

建立工程Simple Mobile Placeholder

首先,我们来简单介绍一下工程Simple Mobile Placeholder。顾名思义,这是一个有意为之的迷你项目-它只是为了测试构建过程而创建的。因此,用它测试是否正确构建和是否在设备上按预期运行是很容易的。
  1. 打开Unity并创建一个工程。
  2. 将工程命名为“SimpleMobilePlaceholder”。
  3. 选择一个位置并保存它。
  4. 确保选择“3D”,以在3D模式下使用Unity Editor。
  5. 点击“Create project”按钮创建工程。

  1. 使用顶部菜单,转到Window->Asset Store。
  2. 搜索“Simple Mobile Placeholder”。
  3. 点击Download来下载,下载完后,然后导入。
  4. 你将看到导入一个完整工程将覆盖你的porject setting的警告。因为我们创建了一个空工程,所以可直接点击Import来导入。

将出现一个导入窗口,显示工程中包含哪些文件。
  1. 点击Import导入此工程。
  2. 在“Project”窗口中,点击“Scenes”文件夹,双击“Main”场景来打开它。

你应该在Scene View中看到一个红色立方体。进入Play模式测试工程。立方体应该旋转。当你点击立方体时,立方体将向相反的方向旋转且Console窗口将输出一条消息:Toggling rotation direction

现在我们知道工程是如何工作的了,接下来将要将其构建到iOS设备上。
注:如果出现“unity SpritePacker failed to get types from UnityEditor.WebGL.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. Error: The classes in the module cannot be loaded.”警告,为没安装WebGL Build Support组件所致,不影响建iOS,若需消除此警告,点击File->Build Settings,选中WebGL,点击Open Download Page,下载安装即可。

将Apple ID添加到Xcode

在构建到设备之前,我们需要创建一个Apple ID并将其添加到Xcode。
如果还没有Apple ID,从Apple ID站点获取。
一旦获得Apple ID,你必须将其添加到Xcode。
  1. 打开Xcode。
  2. 从屏幕顶部的菜单栏选择Xcode->Preferences打开Preferences窗口。
  3. 选择窗口顶部的Accounts,以显示有关已添加到Xcode的Apple ID的信息。
  4. 要添加你的Apple ID,点击左下角的加号,然后选择Add Apple ID。

  • 将出现一个弹出窗口,填入你的Apple ID和密码。
  • 你的Apple ID将出现在左侧列表中。选择你的Apple ID以查看更多信息。
  • 在Team标题下,你将看到你所属的所有Apple Developer Program团队的列表。如果你使用不在Apple Developer Program的免费Apple ID,你将看到你的名字后显示有“(Personal Team)”。

在Apple Developer Program中,teams用于安排谁可以访问工程,拥有什么权限等等。当你使用免费的Apple ID时,Apple会为你的Apple ID创建一个只有你的Personal Team。现在不需担心-这只是测试你的应用所需的步骤之一。
更多有关在Xcode中管理Accounts和Teams的信息,参考此Apple documentation。

准备你的Unity工程以构建到iOS

现在,返回到Unity并切换平台,以便可以构建iOS游戏。
  1. 在Unity中,从顶部菜单中打开Build Settings(File->Build Settings)。
  2. 点击左侧平台列表中的iOS并选择窗口底部的“Switch Platform”。

Switch Platform将当前工程的构建目标设为iOS。这意味着当我们构建时,Unity将创建一个Xcode工程。Switch Platform也强制Unity重新导入工程中的所有资源。在我们这个小测试工程中,并不需要花太长时间,但对于大工程,这将花费一些时间。
接下来,我们需要输入我们游戏的bundle identifier。bundle identifier是用于标识应用的字符串,使用reverse-DNS风格编写,如com.yourCompanyName.yourGameName。允许的字符有字母,数字,.(小数点),-(破折号)。为了构建,我们需要修改默认bundle identifier。
请注意,在写本文时,一旦你在Xcode中向Personal Team注册了bundle identifier,这意味着不能再向其他Apple Developer Program Team注册此bundle identifier。这意味着在使用免费的Apple ID和Personal Team测试游戏时,你应该选择一个仅用于测试的bundle identifier-你将无法使用相同的bundle identifier来发布游戏。一个简单的办法是将“Test”添加到要使用的任何bundle identifier末尾,如com.yourCompanyName.yourGameNameTest。
bundle identifier还有其他限制。当你发布应用时,它的bundle identifier必须是你应用唯一的,且应用提交到App Store之后将不能更改。有关bundle identifier的更多信息,请参阅此Apple documentation。
  • 在Inspector面板中打开Player Setting(Edit->Project Settings->Player)。
  • 展开底部的“Other Setting”部分,然后在Bundle identifier处输入你的bundle identifier。

现在,可以准备构建了。

使用Unity构建一个Xcode工程

将游戏构建到iOS设备涉及两步。首先,Unity构建一个Xcode工程。然后,Xcode将该工程构建到你的设备上。一旦你完成了所有的工作,Unity可以为你启动这两步-但是,当你第一次构建工程到设备上时,包含一点额外的工作,所以你必须分开完成这两步。
有额外工作的原因是为了安全。Apple使用了一种叫做code signing(代码签名)的技术,以确保应用来自已知的代码且并没被篡改,而且在构建之前需要进行设置。更多有关代码签名的信息,请参阅此Apple documentation。
首先,我们要让Unity构建Xcode工程。
  1. 从顶部菜单打开Build Settings("File"->"Build Settings")。
  2. 点击“Add Open Scenes”以将主场景添加到将要构建的场景列表。
  3. 点击“Build”来构建。

系统会提示你选择构建Xcode工程的位置。一个好选择是在工程文件夹中新建一个专用于构建的文件夹。
  1. 点击系统提示右上角的向下箭头将其展开,然后点击New Folder。
  2. 当系统提示选择一个名字是,输入“Builds”并点击Create。这将在你的工程的根目录下创建一个名为“Builds”的新文件夹。
  3. 在标记为Save As的文字输入栏中,输入“iOS”并点击Save。

Unity现在将在“Builds”文件夹下创建一个名为“iOS”的Xcode工程。
Xcode工程是使用Xcode构建应用所需的所有文件和信息,包含代码,图片资源等等的内容被安排到文件夹中。有关Unity创建的Xcode工程的更多信息,请参阅Unity ManualXcode Project Structure页面。

使用Xcode将示例工程构建到你的设备

一旦Unity构建了Xcode工程,将打一个工程位置的Finder窗口。
  1. 双击.xcodeproj文件以使用Xcode打开工程。
  2. 在左上方,选择Unity-iPhone查看工程设置。它将打开并选择General选项。
  3. 最顶端之下的是Identity,你将看到一个带有Fix Issue按钮的警告。这个警告并不意味我们做错了什么-这只是表示Xcode需要下载或创建一些代码签名(code signing)文件。
  4. 点击Fix Issue按钮。

  • 将出现一个弹出窗口,显示已添加到Xcode的任何Teams的详细信息。
  • 确保在下拉列表中有显示正确的team-如果你使用一个免费的Apple ID,你的名字后会跟上“(Personal Team)”。
  • 点击Choose以指示Xcode下载必须的证书(certificates)并生成一个配置文件(provisioning profile)。然后警告将会消失。

证书(certificates)和配置文件(provisioning profile)是代码签名(code signing)所需的文件。你现在不需要关心它们做了什么-但如果你想要了解更多,参见此Apple documentation。
注:Xcode版本不同,出现的情形可能略有不同,如在Xcode 8.3.3中,选择工程配置和相应Targets->General->Signing,Team标签下选择之前生成的Personal Team(“Signing for "Unity-iPhone" requires a development team. Select a development team in the project editor.“即可用此种方式解决)
现在用USB将你的设备连上电脑。如果这是你首次连接此设备,你可能在xcode上看到“processing symbol files”消息-这意味着Xcode正在从设备获取信息,以允许你在此设备上调试应用。等待处理完成。一旦符号文件(symbol files)处理完成,“processing symbol files”将会消失,且你的设备已经可以用来调试了。
构建到设备前的最后一步是确保设备解锁了,因为Xcode不能在密码锁定的设备上启动应用。如果你的设备设置为使用密码解锁,最好在构建到设备之前更改此配置,然后在测试完成后再改回来(其实也不用这么麻烦,因为Xcode在构建应用到设备上时会提示让你解锁设备)。
  • 在设备上,进入“设置”->“显示器和亮度”->“自动锁定”。
  • 禁用锁定时,选择“永不”。
值得注意的是,在“低电量模式”下,“自动锁定”设置将不能更改,除非关闭“低电量模式”。
  • 要关闭“低电量模式”,进入“设置”->“电池”->“低电量模式”来关掉它。
现在,是时候将示例构建到设备上了。
  • 在Xcode界面的左上角,点击Run按钮。

如果你之前没有用Mac开发过iOS或OSX应用,此处则可能看到一个询问是否打开开发者模式(Developer Mode)的弹窗。启用开发者模式(Developer Mode)意味着执行常规开发任务是不需输入你的Mac密码。
  • 选择Enable打开开发者模式,并按提示输入你的Mac密码。

稍等片刻,你会在Xcode顶部中心栏中看到“Build succeeded”的消息,且将应用加载到你的设备上。差不多要完成了!
注:此时如果出现访问钥匙串的授权,选择始终允许或允许,否则无法将应用构建到设备上(“钥匙串访问”可查看证书详细信息)。

你可能会在设备上收到标题为“Untrusted Developer”(不受信任的开发人员,可直接选择信任),或者在Xcode中显示“Could not launch [your app name]”。如果你看到这其中的任何一个,这意味着还剩最后一步:你需要将你的设备设置为信任你的Apple ID。
  1. 在设备上,进入“设置”->“通用”->“设备管理”(Device Management)->“开发者应用”(Developer App)->[your app name]。注:在没有Run之前,手机上是不会存在“设备管理”选项的。
  2. 选择你的Apple ID,然后选择“信任”(Trust)。
只要在你的设备上有一个使用该Apple ID构建的应用,你的设备将允许运行该Apple ID构建的任何内容。如果你从设备中删除了使用该Apple ID生成的所有应用程序,则需要返回到相应设置并再次选择“信任”。

在你的iOS设备上测试游戏

现在,游戏已经构建到你的设备上了。如果你将手机与电脑断开连接,游戏仍然存在。要在设备上运行,点击主屏幕上该游戏的图标即可。
游戏正常运行,红色立方体在旋转,点击它,它会改变旋转方向。
在设备上运行游戏是对其测试的一种方式。也是检查控件是否正常工作的好方法。但是,如果你需要更多的信息,例如,如果你希望玩游戏时看到unity的log,则需要构建运行程序时,设备保持与Xcode的连接。
说做就做。
  1. 将你的设备连上电脑。
  2. 像之前一样,双击.xcodeproj图标打开Xcode工程。
  3. 在Xcode中,选择Run。
Xcode将游戏构建到你的设备上并开始一个调试会话。

如果你在游戏运行时才查看Xcode右下角,你将看到Xcode调试控制台。这包含你在Unity控制台中看到的所有信息,以及有关操作系统中发生的其他事情的调试信息。你可以像使用Unity中的控制台一样使用它来帮助你调试游戏。

点击立方体,Unity控制台中看到的日志也会出现在Xcode调试控制台中,并带有Xcode输入的其他信息。

根据Deployment Info选择的不同iOS平台,会出现Deprecations的相关警告,若需要去除,点击该警告,根据iOS Frameworks里的注释修改即可。也可在出现警告的文件中加入:

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Wdeprecated-declarations" // -Wdeprecated-declarations为需要去除的警告类型

#pragma clang diagnostic pop

警告类型查询

‘extern’ variable has an initializer:extern应在变量声明的头文件中加入,而在定义(申请内存空间)的cpp文件中不需extern,去除即可。

Non-portable path to file '"GlesHelper.h"'; specified path differs in case from file name on disk:使用GlesHelper.h替代GLESHelper.h

结论

“如何构建Unity游戏到iOS设备进行测试”学习了:
  • bundle identifier是什么。
  • 如何使用Xcode构建Unity游戏到你的设备上进行测试。
  • 如何使用Xcode的调试控制台在iOS设备上调试Unity游戏。