本部分介绍在开始使用 iOS 时出现的最常见和最重要的问题。
答:下载 SDK,在 Apple 开发者网站上设置并运行,建立开发团队,准备好设备,并调配资源。我们提供了一份基本步骤列表供您入门之用。
A:是,但仅限于特定情况。要在模拟器中启用 Metal 支持,必须使用 XCode 11 和 macOS 10.15。然而,模拟器本身对 Unity 不是很有用,因为它不会模拟来自 iOS 的所有输入,也不能正确模拟您在 iPhone/iPad 上获得的性能。您应该直接在 Unity 内部测试游戏,使用 iPhone/iPad 作为远程控制装置,同时在设备上运行 Unity Remote 应用程序。然后,准备好测试性能并优化游戏时,应该将游戏发布到 iOS 设备。
答:在 Unity iOS 安装附带的脚本参考中,您将找到构建应用程序所需的钩入设备功能的类。请参阅输入页面以了解更多信息。
答:iOS 的填充率相对较低。如果您的粒子有多层并覆盖了大部分屏幕,即使使用最简单的着色器也会严重影响 iOS 性能。我们建议将粒子效果烘焙成一系列离线纹理。然后,在运行时,可以使用 1–2 个粒子通过动画纹理显示这些粒子。这样可以通过最少量的过度绘制获得良好的结果。
A:物理系统在 iOS 上的成本可能很高,因为它需要大量的浮点数计算。如果可能的话,应该完全避免使用 MeshColliders,但如果确实有必要,也可以使用。要提高性能,请使用 Edit > Time > Fixed Delta Time 设置低固定帧率。建议帧率为 10–30。在使用低物理帧率时,启用刚体插值可以实现平滑运动。为了实现完全流畅的帧率而不出现振荡,最好根据游戏在 iOS 上获得的平均帧率来选择固定的 deltaTime
值。建议使用 1:1 或一半的帧率。例如,如果获得的帧率为 30 fps,则应使用 15 或 30 fps 的固定帧率(0.033 或 0.066)
答:可以,如果您实现它的话。Unity iPhone 支持原生插件系统,您可以在其中添加所需的任何功能,包括访问图库、音乐库、iPod 播放器以及 iOS SDK 公开的任何其他功能。Unity iOS 不提供 API 来通过 Unity 脚本访问列出的功能。
答:使用更多控件时,UnityGUI 会消耗更多资源。在游戏运行时,最好将 UnityGUI 的使用范围仅限于游戏菜单或非常小的 GUI 控件。必须注意,只要对象具有包含 OnGUI()
调用的脚本,就需要额外的处理器时间,即使是空的 OnGUI()
代码块也是如此。如果未使用 GUI 控件,最好禁用所有具有 OnGUI()
调用的脚本。为此,可将脚本标记为 enabled = false
。
答:尽可能减少 GUILayout 的使用。如果在一个 OnGUI()
调用中未使用任何 GUILayout,可以使用 MonoBehaviour.useGUILayout = false;
禁用所有 GUILayout 渲染。这样可以使 GUI 渲染性能提高一倍。最后,在渲染 3D 场景时使用尽可能少的 GUI 元素。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.