在 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 );
我已将在 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 );