Version: 2021.2
使用 Java 或 Kotlin 源文件作为插件
Deep linking on Android

将 Unity 集成到 Android 应用程序中

本页说明如何使用“Unity 用作库”功能将 Unity 运行时库集成到 Android 应用程序中。

使用此功能可以在应用程序中包含 Unity 支持的功能(例如 3D/2D 实时渲染、AR 体验、3D 模型交互或 2D 迷你游戏)。Unity 运行时库公开了多种控件来管理何时以及如何在应用程序中加载、激活和卸载内容。

Important: If you upgrade your project to Unity 2019.4 or above, the introduction of Unity as a Library might require you to adapt native and managed plug-ins to work properly for Android. Plug-ins that make changes to Gradle manifests need to use the the Gradle changes outlined in Using Unity as a library in native iOS/Android apps.

工作原理

从 Unity 构建 Gradle 项目时,无需进行任何其他操作。

Unity 生成的每个 Android Gradle 项目都具有以下结构:

  • unityLibrary 模块中的一个库部分,可以集成到其他任何 Gradle 项目中。这包含 Unity 运行时和播放器数据。
  • launcher 模块中的瘦启动器部分,其中包含应用程序的名称及其图标。这是一个可启动 Unity 的简单 Android 应用程序。您可以将此模块替换为自己的应用程序。

要将 Unity 集成到另一个 Android Gradle 项目中,必须通过 settings.gradle 文件将生成的 Android Gradle 项目的 unityLibrary 模块包含在您的 Android Unity 项目中。

代码仓库包含示例项目和插件(演示如何将 Unity 集成到 Android 应用程序中)以及更多文档。

要控制播放器,请转发 Intent 以启动 Unity 活动并在必要时对其进行扩展。如需了解更多信息,请参阅有关 Intent 和 Intent 过滤器 (Intents and Intent Filters) 的 Android 开发者文档。还可以使用 UnityPlayer Java API。

IUnityPlayerLifecycleEvents

IUnityPlayerLifecycleEvents 提供一种与 Unity Player 的两个重要生命周期事件进行交互的方式:

  • Unload - Application.UnloadUnityPlayer.unload() 卸载 Unity Player 时,应用程序调用 IUnityPlayerLifecycleEvents.onUnityPlayerUnloaded。这会使 Unity Player 处于暂停状态,在该状态下它将卸载所有场景,但将其他所有内容保持在内存中。
  • Quit - Unity Player 退出时,应用程序调用 IUnityPlayerLifecycleEvents.onUnityPlayerQuitted。此调用之后,运行 Unity 的进程将结束。

可将 IUnityPlayerLifecycleEvents 的实例传递到 UnityPlayer 构造函数或者覆盖 UnityPlayerUnityPlayerActivity 子类中的方法。

限制

Unity 不会控制运行时生命周期,因此“Unity 用作库”可能并不适用于所有可能的用例。已知限制包括:

  • “Unity 用作库”仅支持全屏渲染,不支持在部分屏幕中渲染。
  • 您不能加载或集成多个 Unity 运行时实例。
  • 您可能需要调整第三方插件(原生托管插件)才能使用 Unity 运行时。

  • 2019.3 中添加了“Unity 用作 Android 库”。NewIn20193
使用 Java 或 Kotlin 源文件作为插件
Deep linking on Android