none
unity 导出 UWP 到 XBOX 默认会有鼠标,四周空白,以及性能很低。 RRS feed

  • 问题

  •  Hi, 大家好。

    我在从unity 导出 UWP 用的是这样的设置

    因为scripting Backend 设置成 NET 有些会不支持。 所以只能 IL2CPP

    导出后运行在XBOX上会有鼠标,以及屏幕四周会白色。

    后来我发现在 文档上有提到如何在 XAML 下隐藏鼠标。

    可惜似乎是给的 C#的代码。public App() {       

     this.InitializeComponent();       

     this.RequiresPointerMode = Windows.UI.Xaml.ApplicationRequiresPointerMode.WhenRequested;        

    this.Suspending += OnSuspending;

    }
    这个没有作用。

    请问,这个如何解决? 

    还请帮助,非常感谢。

    2018年1月19日 3:35

全部回复

  • 你好,

    一个简单的解决方案是在生成UWP项目时将 Build Type 设为 D3D 而非 XAML。

    DirectX 应用程序不会有鼠标和白边的问题。

    如果你需要使用XAML类型的程序,你可以在生成的UWP项目中找到 App.xaml.cpp 文件并添加如下代码:

    App::App() { InitializeComponent(); SetupOrientation();

    //关闭鼠标模式 RequiresPointerMode = ApplicationRequiresPointerMode::WhenRequested; m_AppCallbacks = ref new AppCallbacks(); }

    void App::InitializeUnity(String^ args)
    {
        ApplicationView::GetForCurrentView()->SuppressSystemOverlays = true;
    
        //扩展UI到屏幕边缘
        ApplicationView::GetForCurrentView()->SetDesiredBoundsMode(ApplicationViewBoundsMode::UseCoreWindow);
    
        m_AppCallbacks->SetAppArguments(args);
        auto rootFrame = safe_cast<Frame^>(Window::Current->Content);
    
        // Do not repeat app initialization when the Window already has content,
        // just ensure that the window is active
        if (rootFrame == nullptr && !m_AppCallbacks->IsInitialized())
        {
            rootFrame = ref new Frame();
            Window::Current->Content = rootFrame;
    #if !UNITY_HOLOGRAPHIC
            Window::Current->Activate();
    #endif
    
            rootFrame->Navigate(TypeName(MainPage::typeid ));
        }
    
        Window::Current->Activate();
    }

    详细信息请参见:

    1. 如何禁用鼠标模式
    2. 如何将 UI 绘制到屏幕的边缘
    2018年1月25日 8:41