在 Windows 8.1 上为 Unity 项目强制执行横向

Enforce Landscape orientation on Windows 8.1 for Unity project

我已将在 Unity 5.2.1f1 中创建的应用程序导出到 Visual Studio 以进行进一步处理。我确实将以下设置应用于 Package.appxmanifest:

支持的旋转:

导出到 WP8.1 设备(带有 Lumia Denim 的诺基亚 Lumia)后,使用调试和 Release/Master 配置,旋转 phone 仍然会导致应用从横向模式切换到纵向模式.

接下来,我在生成的 App.xaml.cs 中更改了以下行:

this.InitializeComponent(); 
appCallbacks = new AppCallbacks();

进入这个:

this.InitializeComponent();
Windows.Graphics.Display.DisplayInformation.AutoRotationPreferences = Windows.Graphics.Display.DisplayOrientations.Landscape | Windows.Graphics.Display.DisplayOrientations.LandscapeFlipped;
appCallbacks = new AppCallbacks();

试图加强 Package.appxmanifest 中所做的设置。仍然无济于事,应用程序仍然可以自由旋转。我还检查了对 AutoRotationPreferences 的进一步调用(可能是其他一些自动生成的代码),但没有找到任何东西。

是否有任何我可以尝试的其他选项,我可能已经监督过的任何细节,或者我是否使用一些已弃用的方法来解决这个问题?任何帮助将不胜感激!

如果您想在 Unity 中使用 Windows 商店配置此类设置,您应该在 Unity 工具中进行。看起来,那里定义的配置在某种程度上覆盖了 VS 解决方案中的包清单。

为此,请转至 Unity 中的 构建设置 菜单(Ctrl+Shift+B), 按播放器设置并打开分辨率和显示 blade 上的 磁贴显示在右侧。此处只需 select 允许 auto-rotation 的方向。这应该可以解决问题。

希望这能解决问题。

我知道这是一个旧的 post,但我发现 this link providing a link to a blog post 指示如何在代码中禁用纵向模式。

public static void SetScreenOrientationToLandscape()
{
    SetDisplayAutoRotationPreferences( (int) ORIENTATION_PREFERENCE.ORIENTATION_PREFERENCE_LANDSCAPE |
        (int) ORIENTATION_PREFERENCE.ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED );
}

public enum ORIENTATION_PREFERENCE
{
    ORIENTATION_PREFERENCE_NONE = 0x0,
    ORIENTATION_PREFERENCE_LANDSCAPE = 0x1,
    ORIENTATION_PREFERENCE_PORTRAIT = 0x2,
    ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = 0x4,
    ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = 0x8
}
[System.Runtime.InteropServices.DllImport( "User32.dll" )]
public static extern bool SetDisplayAutoRotationPreferences( int value );