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

时间:2015-12-04 10:44:20

标签: unity3d windows-phone-8.1 visual-studio-2015 screen-orientation

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

支持的轮播:

  • 风景
  • 横向 - 翻转

导出到WP8.1设备(带Lumia Denim的诺基亚Lumia)后,无论是调试还是发布/主配置,旋转手机仍会导致应用从横向模式切换到纵向模式。

接下来,我在生成的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的进一步调用(想想可能是其他一些自动生成的代码),但没有找到任何东西。

我可以尝试任何其他选项,我可能会监督的任何细节,还是我使用一些不赞成的方法来解决这个问题?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

我知道这是一篇旧帖子,但我发现this link提供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 );

答案 1 :(得分:1)

如果要在Unity中使用Windows商店配置此类设置,则应在Unity工具中执行此操作。看来,在那里定义的配置有点覆盖VS解决方案中的包清单。

要执行此操作,请转到Unity中的 构建设置 菜单(Ctrl + Shift + B),然后按< strong> 播放器设置 ,然后在右侧显示的刀片上打开 分辨率和演示文稿 磁贴。只需在此处选择允许自动旋转的方向。这应该可以解决问题。

Unity

希望这可以解决问题。