Unity 集成到原生 iOS 应用程序中。关闭 Unity 部件并尝试重新打开它时应用程序崩溃
Posted
技术标签:
【中文标题】Unity 集成到原生 iOS 应用程序中。关闭 Unity 部件并尝试重新打开它时应用程序崩溃【英文标题】:Unity integrated into native iOS app. App crashes when closing Unity part and trying to reopen it 【发布时间】:2016-10-31 20:34:42 【问题描述】:遵循this 教程后,我设法将 Unity 应用程序集成到本机 ios 应用程序中。我目前面临的问题是当我尝试从 Unity 部分返回到原生 iOS 时。
对于 android,我通过以下方式解决了这个问题:
public void ReturnToNative()
#if UNITY_ANDROID
AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");
jo.Call ("goBack");
#endif
#if UNITY_IOS
Application.Quit();
#endif
原生 Java 方法“goBack”基本上会停止,然后完成一个包含 Unity 部分的活动。
我知道对于 iOS,解决方案不是 Application.Quit(),我应该使用 iOS 插件。
所以我的问题是,这个插件应该做什么?我怎样才能让它发挥作用?
我知道如何创建插件,但我不知道这个特定插件应该包含什么。
非常感谢任何帮助/提示/方向/评论!
PS。我正在使用 Unity 5.4.2 和 Xcode 8.0。 Unity 部分使用 Google Cardboard SDK。
【问题讨论】:
您说您尝试制作一个与应用程序退出不同的 ios 插件。那是什么? @turnipinindia 我添加了一个带有@interface UnityHider : UIResponder <UIApplicationDelegate> - (void)hideUnityWindow; @end
的.h 文件和一个带有#import "UnityHider.h" @implementation UnityHider - (void)hideUnityWindow [[self window] makeKeyAndVisible]; @end
的.m 文件。我根据 Unity 文档 docs.unity3d.com/Manual/PluginsForIOS.html 调用了 hideUnityWindow。这段代码是 iOS 开发者给我的,我只做 Unity 部分
【参考方案1】:
要在 iOS 上使用原生插件,请阅读以下信息:
https://docs.unity3d.com/Manual/NativePlugins.html https://docs.unity3d.com/Manual/PluginsForIOS.html
【讨论】:
谢谢,我知道如何创建和使用插件。我的问题与 what 插件应该做什么有关。我在发布问题几天后找到了解决方案,但我在项目中遇到了一些与集成相关的错误。一旦我解决了这些问题,我会发布我的答案【参考方案2】:这个问题已经过去几个月了,但如果其他人遇到类似问题,here's我是如何解决这个问题的。
【讨论】:
以上是关于Unity 集成到原生 iOS 应用程序中。关闭 Unity 部件并尝试重新打开它时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
原生 iOS Unity 集成 - AppStore 配置文件导致找不到“UnityFramework/UnityFramework.h”文件
Android项目实战(三十九):Android集成Unity3D项目(图文详解)