我有一个应用程序,其中包含Xcode Storyboard UI和托管Unity3D/Vuforia项目的其中一个视图。我之前使用Unity 4.6.2和Vuforia 3.0.9,并且已经使用以下方法实现了UnityAppDelegate子类,这允许我执行此操作。iOS ViewController层次结构更改为Unity 4.6.5和Vuforia 4.2更新
-(void)createViewHierarchyImpl
{
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"AR" bundle:nil];
PPARStartViewController * helloVC = (PPARStartViewController *)[sb instantiateViewControllerWithIdentifier:@"StartController"];
self.navController = [[UINavigationController alloc] initWithRootViewControllier:helloVC];
self.navController.navigationBarHidden = YES;
_rootController = self.navController;
_rootView = self.navController.view;
}
我也写了一个扩展的UINavigationController进一步处理旋转变化了我的看法栈(加载不同的图像取决于方向)。
但是,我必须更新我的应用程序才能使用Unity3D 4.6.5和Vuforia 4.2,因为要将应用程序提交到App Store需要64位。这导致了一些问题。
- 上述createViewHierarchyImpl方法不再适用于该状态。它抛出一个运行时错误:
终止应用程序由于未捕获的异常“UIViewControllerHierarchyInconsistency”,理由是:“子视图控制器:PPARStartViewController:0x17dc3070应该有父视图控制器:UnityDefaultViewController:0x1c083200但实际的父是:UINavigationController的:0x17dc3820 '
我不得不它更改为以下:
-(void)createViewHierarchyImpl
{
_rootController = [[UIViewController alloc] init];
_rootView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
_rootController.view = _rootView;
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"AR" bundle:nil];
PPARStartViewController * helloVC = (PPARStartViewController *)[sb instantiateViewControllerWithIdentifier:@"StartController"];
self.navController = [[UINavigationController alloc] initWithRootViewController:helloVC];
[_rootView addSubview:self.navController.view];
self.navController.navigationBarHidden = YES;
}
- 从之前做上述变化层次,以及我的UINavigationControl ler扩展类不再捕获轮换调用。他们现在被UnityDefaultViewController捕获。我试图以相同的方式扩展这个类,但是在运行时,视图控制器似乎没有孩子,父母或与当前加载的视图的任何关系。
- 最后,可能无关,但我确定它可能是,Vuforia视图不能正确旋转。肖像和LandscapeLeft都很好,但在LandscapeRight和PortraitUpsidedown中,相机馈送会翻转。
- 理想的情况下,我希望有人能告诉我,我的问题1的原始代码是可能的,我只是失去了一些东西,修复的父母关系我的视图控制器。
- 如果不是,那么我需要找出如何将旋转通知从UnityDefaultViewController传递到我的UINavigationController。
- 最后,有没有办法停止UnityPlayer视图旋转?除了相机馈送和增强内容之外,没有其他任何内容,因此实际视图甚至不需要旋转。
解决方案,我希望:
我有问题,也有Vuforia 4.x版升级到Unity 5时,但他们与其他iOS插件。在找出发生了什么的过程中,我看到关于'createViewHierarchy'的一些注释不再使用。也许它有助于检查生成的类/头文件_Classes/UI/UnityAppController + ViewHandling.h_中的注释。如果你使用IMPL_APP_CONTROLLER_SUBCLASS因为Vuforia做,其中一个是用到底 – Kay
我仍在使用统一4.6.6未定义行为从而结束相同的,所以我不知道,注册自己的应用程序控制器照顾,如果候补createViewHierarchy可用。不过明天我会看看这些。 另外,我使用我自己的应用程序控制器,但在更新后将它合并到Vuforia中。 – Dover8
谢谢@Kay,您的评论确实将我发送到了答案的路径上,我在下面详细介绍了答案。 – Dover8