前言
本文涉及到两个部分,第一部分说一下导出Xcode 项目,Unity的基本配置以及一些小细节。第二部分说一下Unity导出的Xcode工程结构。文章内容比较基础。在Unity和iOS方向我是一个新手,文章内容只为了记录一下学习的过程,帮助有需要的同学。
编译器版本
Unity :Unity 19.4.2f1 Personal
Xcode : Xcode 12.2
第一部分
用Unity导出Xcode,肯定是需要Mac电脑一台,打开Unity — File — Build Settings — Platform —— IOS —— Player Settings —— Other Settings(包名、版本号等设置),重点是Other Settings 继续往下看,下图中我挑几个重要的属性配置说下。
Bundle Identifile:包标识符类似安卓中的包名,包标识符要和配置证书中使用的包名字符串一致,否则无法使用证书上线
Bundle Version : 包版本,字符串数值需要递增
Scripting Backend:如需要提交到AppStore审核的,要支持64位,就需要选择设置为IL2CPP(IL2CPP在Mac版19.4.2f中为默认选择,此处可代码设置属性)。
-
Target Device :目标设备有三个选项
iPhone Only : 导出的项目仅支持iPhone设备
iPad Only : 导出的项目仅支持iPad设备
Phone + iPad : 导出的项目支持iPhone和iPad设备
-
Target SDK :目标SDK有三个选项
Device SDK : 导出的项目支持手机设备上运行
Simulator SDK : 导出的项目支持模拟器设备上运行
Target minimum iOS Version :构建iOS项目最低版本支持
Api Compatibility Level :指定可用的 .NET API 支持,建议Unity 19.4.2f1 Personal 版本用.NET 4.X
-
Architecture : 指定目标架构,有三个架构选项
Universal : 通用架构 在此版本包含ARMv7 和ARM64
ARMv7
ARM64 :设置架构我建议用ARM64
到这里该配置的属性都配置好了,需要Build Xcode工程了,导出Xcode项目结构如下图。
双击Unity-iPhone.xcodeproj即可打开Xcode工程。
第二部分
第二部分,Unity导出的Xcode工程结构。生成的Unity IOS Xcode项目工程如下图:
MainApp 文件夹 :
是iOS原生程序的入口,代码主要是加载了Unity库Frameworks/UnityFramework.framework (Unity导出的Xcode项目程序入口是UnityAppController.mm)
Classes文件夹
Classes 文件夹包含用于集成 Unity Runtime 和 Objective-C 的代码。Unity 将应用程序的入口点存储在此文件夹内的 main.mm 和 UnityAppController.mm/h 文件中。如果你的任何插件包含 AppController.h,你可以改为包含 UnityAppController.h。如果 Plugins/iOS文件夹包含 AppController.mm/h,可以对它们进行合并和重命名。
Data 文件夹
此文件夹包含应用程序的序列化资源以及 .NET 程序集(.dll 或 .dat 文件),其形式为完整代码或元数据(取决于代码剥离设置)。machine.config 文件可以设置各种 .NET 服务(例如安全性和 WebRequest)。Xcode 在每次构建时都会刷新此文件夹的内容。你不需要对其进行任何修改。补充一下Unity生成的AssetBundles文件夹就是放在Raw文件夹内。
Libraries 文件夹
Libraries 文件夹包含用于 IL2CPP 的 libil2cpp.a。libiPhone-lib.a 文件是 Unity Runtime 静态库,RegisterMonoModules.cpp将 Unity 原生代码与 .NET 绑定。Xcode 在每次构建时都会刷新此文件夹的内容。你可以不用做任何修改。
图形文件
图标和启动画面(.png 文件)位于 Unity-iPhone 文件夹中的资源目录中。Unity 自动管理这些文件。启动屏幕、它们的 XML 接口构建器(.xib 文件)和 Storyboard 文件存储在项目的根文件夹中。要在 Unity 中设置它们,需要设置 Player Settings (菜单:Edit > Project Settings > Player Settings)。创建自定义启动图像时,需要确保图像遵守 Apple 的规范。启动动画这里可以参考我的另一篇博客:Unity 设置安卓和ios平台的闪屏页
plist文件
这个东西本质上也是个XML,跟安卓的清单文件功能类似,没什么好说的,主要是一些权限 和一些ios配置。
结尾
干我们这一行的,什么时候懈怠了,就意味着没有长进。没有长进意味着会被被淘汰。只能往前冲,直到成为不死鸟。