OpenGL MonoTouch游戏的定位

时间:2011-11-22 01:15:51

标签: c# iphone ios xamarin.ios

寻找在我的MonoTouch游戏中处理方向的正确方法(尽管Obj-C中的答案很好)。

我们希望支持LandscapeLeft和LandscapeRight方向,但保留原生操作系统方向,以便音量弹出和通知中心面板不会颠倒。

这很令人困惑,因为有几种方法可以实现我们的需要:

  1. Info.plist设置
  2. 在UIViewController
  3. 中应该旋转覆盖
  4. 设置UIDevice.CurrentDevice.Orientation
  5. 或者只是挂钩进入NSNotificationCenter并使用OpenGL执行旋转,翻译触摸事件
  6. 我最好的工作是使用#1和#4,出于性能原因,Apple似乎也推荐使用#1和#4。我阅读了一些文档,说使用OpenGL内容旋转视图(通过选项#2)会损害perf,请参阅性能部分下的here。 (我们希望我们的游戏在更老的iPod Touch上运行良好)

    我的问题是,当旋转LandscapeRight时,一切都在我的游戏中正确绘制,但音量和通知中心在操作系统中是颠倒的。

    有没有更好的方法来解决这个问题?

    我看了一下其他游戏出现要做的事情:

    1. 愤怒的小鸟 - 使用OpenGL旋转,但在LandscapeRight中正常工作
    2. 跳出 - 使用UIViewController旋转
    3. Tiny Wings - 根本不旋转
    4. 我希望旋转完全像在我的应用程序中工作的愤怒的小鸟。

1 个答案:

答案 0 :(得分:1)

我在项目目标设置中设置了支持的方向,但我只是在没有OpenGL的情况下旋转视图。

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}