我有一个使用 Vuforia AR 库的统一应用程序。我用一些 iOs 代码扩展了这个应用程序。我希望有时能够显示我的自定义 UIViewControllers 而不是 Unity 使用的主视图控制器。但我希望能够切换回来。即:我有一个按钮可以打开带有“关于应用程序”信息的 UIViewController,然后该控制器具有“退出”按钮以返回 Unity 控制器。
这是我添加新控制器而不是 Unity 视图控制器的代码:
self.unityRootController = self.keyWindow.rootViewController; // keep reference to the Unity Controller
self.keyWindow.rootViewController = controller; // display my own controller
// this pauses the unity and qcar -> so that QCAR doesn't try to recognize objects, when Unity Controller is not up
QCARUnityPlayer::getInstance().QCARPause(true);
UnityPause(true);
然后从我自己的控制器返回到 Unity 控制器时:
self.keyWindow.rootViewController = self.unityRootController; // return to Unity Controller
// start tracking with QCAR and unpause Unity View
QCARUnityPlayer::getInstance().QCARPause(false);
UnityPause(NO);
这很好用,除了一种情况,这导致我自从遇到它就拉扯我的头发。我的应用程序支持在 Unity 和 ObjectiveC 代码中更改屏幕方向。这就是麻烦:如果我在设备处于纵向时打开我的视图控制器,然后将设备转到横向,我的控制器会正确旋转。但是如果我此时想要关闭我的自定义视图控制器并返回统一控制器,屏幕会突然变黑。将设备旋转到纵向后,统一控制器突然开始按预期工作。
我希望统一控制器在关闭我的自定义视图控制器后直接启动,即使屏幕方向发生了变化。我想我必须在这里重新启动 Unity Player 后添加一些代码:
QCARUnityPlayer::getInstance().QCARPause(false);
UnityPause(NO);
// TODO: supposedly some code should go here, that fixes black screen
但我试图在 AppController.mm 中找到一些由 Unity 构建的东西,但我找不到任何对我有帮助的东西。我发现了几行统一代码,其中包含“方向”一词,但我尝试使用该代码并没有帮助。有谁知道,请问我该怎么办?非常感谢:)