版本:2022.3
Bonjour浏览器示例
iOS上的深度链接

将Unity集成到本地iOS应用程序中

本页介绍如何使用Unity as a Library功能将Unity Runtime Library集成到iOS本地应用程序中。

您可以使用此功能包括Unity-powered功能,例如3D/2D Real-Time Rendering、,应收账增强现实更多信息
请参阅中的词汇表
在本地应用程序中体验3D模型交互或2D迷你游戏。Unity Runtime Library公开了用于管理何时以及如何在本地应用程序中加载、激活和卸载内容的控件。

它是如何工作的

要将Unity用作iOS的库,首先要像往常一样从Unity构建Xcode项目。有关更多信息,请参阅构建iOS应用程序.

每个Unity iOS Xcode项目都有以下内容结构:

  • 中的库部件Unity框架包含源的目标,插件在Unity之外创建的一组代码,用于在Unity中创建功能。您可以在Unity中使用两种插件:托管插件(使用Visual Studio等工具创建的托管.NET程序集)和本机插件(特定于平台的本机代码库)。更多信息
    请参阅中的词汇表
    和相关框架。它还生成统一框架框架文件。
  • 中的一个薄启动器部件Unity-iPhone手机目标,包括应用程序表示数据并运行库。这个Unity-iPhone手机目标对统一框架目标。

要将Unity集成到另一个Xcode项目中,您需要将两个Xcode工程(本地项目和Unity生成的项目)合并到一个Xcode工作区中,并添加Unity框架.framework文件到嵌入式二进制文件的部分应用程序本机Xcode项目的目标。完成此操作后,可以使用Unity框架类来控制Unity运行时。

这个储存库包含演示如何将Unity集成到Xcode项目中的示例项目和插件,以及进一步的文档。

UnityFramework类

您可以通过Unity框架Objective-C类,它是Unity框架.framework:

方法 描述
+(UnityFramework*)获取实例; 将实例返回到的Singleton类方法Unity框架.
-(UnityAppController*)应用控制器; 返回单元应用程序控制器的子类UI应用程序代表。这是本机端的根Unity类,可以访问应用程序的视图相关对象,例如UI视图UI视图控制器CA显示链接,或DisplayConnection(显示连接).
-(void)setDataBundleId:(const char*)bundleId; 设置Unity运行时应在其中查找数据文件夹。有关更多信息,请参阅数据文件夹。在调用之前调用此方法运行UIApplicationMainWithArgc运行嵌入Argc.
-(void)runUIApplicationMainWithArgc:(int)argc argv:(char*[])argv; 从没有其他视图的main方法运行Unity的默认方式。
-(无效)运行EmbeddedWithArgc:(int)argc argv:(char*[])argv appLaunchOpts:(NSDictionary*)appLaunch Opts; 当您需要在存在其他视图的情况下运行Unity时,请调用此方法。
-(无效)卸载应用程序; 调用此命令卸载Unity并接收回调UnityFrameworkListener卸载完成后。Unity将释放它占用的大部分内存,但不是全部内存。你将能够再次运行Unity。
-(void)registerFrameworkListener:(id<UnityFrameworkListener>)obj; 注册接收UnityFramework生命周期相关事件回调的侦听器对象。
-(void)unregister FrameworkListener:(id<UnityFrameworkListener>)obj; 注销侦听器对象。
-(无效)showUnityWindow; 在显示非Unity视图时调用此方法,以同时显示已经运行的Unity视图。
-(void)pause:(bool)暂停; 暂停团结。
-(void)setExecuteHeader:(const MachHeader*)标头; 为了让CrashReporter正常工作,您必须在运行Unity之前调用此函数。
-(void)sendMessageToGOWithName:(const char*)goName functionName:(const char*)name message:(const-char*)msg; 此方法是的代理UnitySend消息。它按名称查找游戏对象,并使用单字符串消息参数调用functionName。
(void)quitApplication:(int)exitCode; 调用此命令以完全卸载Unity并接收回调UnityFrameworkListener当Unity退出时。团结将释放所有记忆。

注:在这个调用之后,您将无法在同一进程中再次运行Unity。您可以设置quitHandler(退出处理程序)应用程序控制器覆盖默认进程kill。

限制

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


  • 添加了Unity as a Library for iOS2019.3.20193年新增
Bonjour浏览器示例
iOS上的深度链接