包含此页的版本:
不含此页的版本:
本页介绍如何使用 Unity 作为库功能将 Unity 运行时库集成到 iOS 本机应用程序中。
您可以使用此功能来包含 Unity 支持的功能,例如 3D/2D 实时渲染、AR增强现实
更多信息 见术语表在本机应用程序中体验 3D 模型交互或 2D 迷你游戏。Unity 运行时库公开了用于管理本机应用程序中加载、激活和卸载内容的时间和方式的控件。
要将 Unity 用作 iOS 的库,请先像往常一样从 Unity 构建 Xcode 项目。有关详细信息,请参阅构建 iOS 应用程序。
每个 Unity iOS Xcode 项目都有以下结构:
UnityFramework.framework文件。要将 Unity 集成到另一个 Xcode 项目中,您需要将两个 Xcode 项目(原生项目和 Unity 生成的项目)合并到一个 Xcode 工作区中,并将UnityFramework.framework文件添加到本机 Xcode 项目的应用程序目标的 Embedded Binaries 部分。完成此作后,您可以使用UnityFramework类来控制 Unity 运行时。
此存储库包含演示如何将 Unity 集成到 Xcode 项目中的示例项目和插件,以及进一步的文档。
您可以通过UnityFrameworkObjective-C 类,它是UnityFramework.framework:
| 方法 | 描述 |
|---|---|
+ (UnityFramework*)getInstance; |
Singleton 类方法,将实例返回给UnityFramework. |
- (UnityAppController*)appController; |
返回UnityAppController的子类UIApplicationDelegate.这是本机端的根 Unity 类,可以访问应用的 View 相关对象,例如UIView,UIViewControllers,CADisplayLink或DisplayConnection. |
- (void)setDataBundleId:(const char*)bundleId; |
设置 Unity 运行时应在其中查找 Data 文件夹的 Bundle。有关详细信息,请参阅有关 Data 文件夹的文档。在调用之前调用此方法runUIApplicationMainWithArgc或runEmbeddedWithArgc. |
- (void)runUIApplicationMainWithArgc:(int)argc argv:(char*[])argv; |
从没有其他视图的 main 方法运行 Unity 的默认方法。 |
- (void)runEmbeddedWithArgc:(int)argc argv:(char*[])argv appLaunchOpts:(NSDictionary*)appLaunchOpts; |
当您需要在存在其他视图时运行 Unity 时,请调用此方法。 |
- (void)unloadApplication; |
调用此 以卸载 Unity 并接收回调UnityFrameworkListener卸载完成后。Unity 将释放它占用的大部分内存,但不是全部。您将能够再次运行 Unity。 |
- (void)registerFrameworkListener:(id<UnityFrameworkListener>)obj; |
注册接收 UnityFramework 生命周期相关事件回调的侦听器对象。 |
- (void)unregisterFrameworkListener:(id<UnityFrameworkListener>)obj; |
取消注册侦听器对象。 |
- (void)showUnityWindow; |
在显示非 Unity 视图时调用此方法,以显示已在运行的 Unity 视图。 |
- (void)pause:(bool)pause; |
暂停 Unity。 |
- (void)setExecuteHeader:(const MachHeader*)header; |
您必须在运行 Unity 之前调用此命令,以便 CrashReporter 正常工作。 |
- (void)sendMessageToGOWithName:(const char*)goName functionName:(const char*)name message:(const char*)msg; |
此方法是 UnitySendMessage 的代理。它按名称查找游戏对象,并使用单字符串消息参数调用 functionName。 |
(void)quitApplication:(int)exitCode; |
调用此命令以完全卸载 Unity 并接收回调UnityFrameworkListener当 Unity 退出时。Unity 将释放所有内存。注意:在此调用之后,您将无法在同一进程中再次运行 Unity。您可以设置 quitHandler上AppController以覆盖默认进程终止。 |
Unity 不控制运行时生命周期,因此 Unity 作为库可能不适用于所有可能的用例。已知限制包括: