C# OpenGL单点触摸游戏中的定位

C# OpenGL单点触摸游戏中的定位,c#,iphone,ios,xamarin.ios,C#,Iphone,Ios,Xamarin.ios,在我的单触游戏中寻找正确的方向处理方法(尽管Obj-C中的答案很好) 我们希望支持LandscapeLeft和LandscapeRight方向,但保留本机操作系统方向,以便卷弹出窗口和通知中心面板不会颠倒 这相当令人困惑,因为有几种方法可以实现我们所需要的: Info.plist设置 UIViewController中的应旋转覆盖 设置UIDevice.CurrentDevice.Orientation 或者直接挂接到NSNotificationCenter并使用OpenGL执行旋转,转换触摸事

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

我们希望支持LandscapeLeft和LandscapeRight方向,但保留本机操作系统方向,以便卷弹出窗口和通知中心面板不会颠倒

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

  • Info.plist设置
  • UIViewController中的应旋转覆盖
  • 设置UIDevice.CurrentDevice.Orientation
  • 或者直接挂接到NSNotificationCenter并使用OpenGL执行旋转,转换触摸事件
  • 我所能做的最好的工作就是使用#1和#4,这似乎也是苹果出于性能原因而推荐的。我阅读了一些文档,其中指出使用OpenGL内容旋转视图(通过选项2)会影响性能,请参见“性能”部分。(我们希望我们的游戏能够在更老的iPod Touch上运行良好)

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

    有没有更好的办法

    我看了一下其他一些游戏的功能:

  • 愤怒的小鸟-使用OpenGL进行旋转,但是在LandscapeRight中可以正常工作
  • 跳出-使用UIViewController旋转
  • 小翅膀-根本不旋转

  • 我希望获得旋转,就像愤怒的小鸟在我的应用程序中工作一样。

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

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

    我面前没有Mac电脑可以尝试,但我觉得我尝试了这个选项,并且在游戏缩放方面遇到了问题。我注意到整个场景中的像素化,就好像所有的东西都被拉伸了一样(也许在我的游戏场景中,backbuffer是人像)。你注意到游戏中的这个问题了吗?我在UIView中将ContentMode设置为TopLeft后,你的方法运行得非常好。在调用GL.Ortho和GL.Viewport时,我还必须反转一些坐标。我将不得不等待,看看是否真的有任何性能问题。我确实有一次出现了缩放问题-这是由于屏幕外的移动和设备试图重新缩放以保持屏幕上。我允许设置屏幕进行缩放,但没有将其切换回游戏屏幕以防止其出现。