版本: Unity 6 (6000.0)
语言 : 英语
从 C# 脚本调用 Java 和 Kotlin 插件代码
Android 应用入口点

将 Unity 集成到 Android 应用中

此页面介绍如何使用 Unity 作为库功能将 Unity 运行时库集成到 Android 应用中。

您可以使用此功能将 Unity 提供的功能(如 3D/2D 实时渲染、AR增强现实 更多信息
请参见 术语表
体验、3D 模型交互或 2D 迷你游戏)添加到您的应用中。Unity 运行时库公开控制,以便管理何时以及如何加载、激活和卸载应用中的内容。

重要:在您的项目中引入 Unity 作为库可能需要您调整 原生托管 插件在 Unity 之外创建的一组代码,可在 Unity 中创建功能。Unity 中可以使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(平台特定的原生代码库)。更多信息
请参见 术语表
以便它们在 Android 上正常工作。对 Gradle一种 Android 构建系统,可自动执行多个构建过程。这种自动化意味着许多常见的构建错误不太可能发生。 更多信息
请参见 术语表
清单进行更改的插件需要使用 在原生 iOS/Android 应用中使用 Unity 作为库 中概述的 Gradle 更改。

工作原理

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

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

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

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

存储库 包含演示如何将 Unity 集成到 Android 应用中的示例项目和插件,以及更多文档。

要控制 Player,请传递一个 Intent 以启动 Unity 活动,并在需要时扩展它。有关更多信息,请参阅 Android 开发者文档关于 Intent 和 Intent 过滤器 的内容。您还可以使用 UnityPlayer Java API。

IUnityPlayerLifecycleEvents

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

  • 卸载 - 当 Application.UnloadUnityPlayer.unload() 卸载 Unity Player 时,应用程序会调用 IUnityPlayerLifecycleEvents.onUnityPlayerUnloaded。这会将 Unity Player 置于暂停状态,在该状态下它会卸载所有 场景场景包含游戏环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您可以放置环境、障碍物和装饰,基本上就是设计和构建游戏的各个部分。 更多信息
    请参见 术语表
    ,但保留内存中的所有其他内容。
  • 退出 - 当 Unity Player 退出时,应用程序会调用 IUnityPlayerLifecycleEvents.onUnityPlayerQuitted。在该调用后,运行 Unity 的进程将结束。

您可以将 IUnityPlayerLifecycleEvents 的实例传递给 UnityPlayer 构造函数,或覆盖 UnityPlayerUnityPlayerActivity 子类的中方法。

限制

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

  • Unity 作为库仅支持全屏渲染。但是,如果您是 Unity Industry 客户,限制和功能可能会有所不同。
  • 您无法加载或集成多个 Unity 运行时实例。
  • 您可能需要调整第三方插件(包括 原生托管)以与 Unity 运行时一起使用。
  • Unity 作为库与 Xamarin 应用平台 不兼容。
  • 您无法将 Unity 运行时库作为动态模块与 Play 功能交付 集成。

其他资源

从 C# 脚本调用 Java 和 Kotlin 插件代码
Android 应用入口点