Unity 2019.3及之后的版本将添加支持,可以将Unity作为原生Android和iOS应用控制的库,以便轻松加入AR和其它Unity功能。

这意味着开发者可以将Unity所能实现的增强现实AR、3D/2D实时渲染、2D迷你游戏等功能,直接添加到自己的原生移动应用。

直接上代码 Use Unity as Library

限制

  • 作为库使用的Unity仅支持全屏渲染,不支持在屏幕的一部分进行渲染。
  • 不支持加载多个Unity运行时实例。
  • 开发者需要调整第三方插件,包括原生插件和托管插件,从而让它们正常工作。

集成要求

  • Xcode 9.4以上版本
  • Unity 2019.3.a2以上版本

集成步骤

1.下载示例工程

  • 克隆或下载 Demo 这包含
    • UnityProject-这是Unity示例工程,其中包含了几个简单的交互,我们要将他集成进原生工程。Assets/Plugins/iOS 中的文件,用于Unity与原生应用进行通信
    • NativeiOSApp-这是简单的iOS原生应用,我们要在其中集成Unity项目。使用UnityFrameworkLoad()加载Unity引擎

2.导出Unity为Xcode项目

无需特别设置,正常生成Xcode项目

  • 从Unity编辑器中打开UnityProject
  • 删除或更新广告软件包至v3.*(2.0.8版本与作为库的Unity不兼容)(Menu/Window/Package Manager)
  • 选择并切换到平台iOS(Menu/File/Builds Settings)
  • 点击Build,选择导出文件夹UnityProject/Build,点击构建

3.设置Xcode workspace

使用Xcode workspace将原生项目和导出的项目集成到一起

  • 新建Untitled.workspace保存到根目录下 (File/New/Workspace)
  • 点击左下角的加号添加NativeiOSApp.xcodeproj和第二步生成的Unity-iPhone.xcodeproj(File / Add Files to "Untitled")

4.添加UnityFramework.framework

这个步骤把Unity的工程已framework的形式集成进NativeiOSApp,不需要改变NativeiOSApp的结构

  • 在NativeiOSApp中选择NativeiOSApp target
  • 在Build Phases/ Embedded Binaries栏目中点击+
  • 选择Unity-iPhone/Products/UnityFramework.framework
  • 在Build Phases/Linked Frameworks and Libraries中移除UnityFramework.framework

5.暴露NativeCallProxy.h

这个文件是Unity和原生项目接口的定义

  • 选择Unity-iPhone / Libraries / Plugins / iOS / NativeCallProxy.h
  • 在Inspector/Target Membership中选择UnityFramework并设置为Public

6.暴露Data文件夹

默认Data文件是属于Unity-iPhone target,我们要将他暴露给framework

  • 选择Unity-iPhone/Data文件夹
  • 在Inspector/Target Membership中选择UnityFramework

如果顺利,现在就可以成功的运行NativeiOSApp了

Swift集成

原生Swift集成过程跟OC的一样,只不过NativeCallProxy的实现需要桥接文件。在桥接文件中引入

#import <UnityFramework/NativeCallProxy.h>

我新建了一个UnitySwiftMix.workspace Demo演示如何在Swift中集成,并封装了Unity Framework的接口,同时这个工程也集成了Pod

详情请点击 Use Unity as Library

参考

在原生iOS或Android应用中将Unity作为库使用

Integration Unity as a library in native iOS app