将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只支持全屏渲染,不支持在部分屏幕上渲染。
- 您不能加载Unity运行时的多个实例。
- 您可能需要调整第三方插件(两者都是本地的和管理)使用Unity运行时。
- 您无法通过iOS Player设置在本机iOS应用程序中将Unity用作库时。考虑使用以下任一选项来实现相同的效果:
-
添加了Unity as a Library for iOS2019.3.20193年新增