Table of Contents

窗口配置

初级

游戏窗口的属性可以通过代码控制。

目前,这无法在 Game Studio 中配置,因此一个简单的替代方案是在项目的根场景中放置一个 Startup Script,用来修改 Game.Window 的值。

Note

最好的方案是在窗口打开之前通过重写 Game 类来修改这些属性,但这超出了本页面的范围。

using Stride.Engine;

namespace MyGame
{
    public class WindowSetupScript : StartupScript
    {
        public override void Start()
        {
            // 在此处设置窗口属性
            
            // 示例
            Game.Window.IsBorderLess = true;
        }
    }
}

使窗口可调整大小

要允许调整窗口大小,请将 AllowUserResizing 设置为 true。

Game.Window.AllowUserResizing = true

全屏

要进入全屏模式,请将 IsFullscreen 设置为 true。

Game.Window.IsFullscreen = true

默认情况下,Stride 使用独占全屏。可以通过将 FullscreenIsBorderlessWindow 设置为 true 更改为无边框全屏。

Game.Window.FullscreenIsBorderlessWindow = true;

这两种全屏模式的主要区别在于,独占全屏会将游戏直接渲染到屏幕上,而无边框全屏则会调整窗口大小以占据整个显示器。

Note

独占全屏可以略微提升性能,但由于会使在不同应用程序之间切换变得更慢、更繁琐,大多数玩家通常不喜欢这种方式。

分辨率

可以使用 SetSize 方法设置分辨率,使用 ClientBounds 属性读取分辨率。

// 将窗口大小设置为 1920x1080
Game.Window.SetSize(new Int2(1920, 1080));

// 读取窗口大小和位置
var newBounds = Game.Window.ClientBounds;

整个屏幕的大小可以在 Game.GraphicsDevice 中找到。

// 所有已连接显示器的列表
var monitors = Game.GraphicsDevice.Outputs;

// 读取第一个已连接显示器的大小和位置
var bounds = monitors[0].DesktopBounds;

每个输出还包含该显示器支持的显示模式列表。这在创建分辨率下拉菜单(用于游戏的设置菜单)时非常有用。

var supportedDisplayModes = monitors[0].SupportedDisplayModes;

// 创建可用分辨率列表
var resolutions = new List<Int2>();
foreach (var mode in supportedDisplayModes)
{
    var res = new Int2(mode.Width, mode.Height);
    if (!resolutions.Contains(res))
        resolutions.Add(res);
}

标题

可以使用 Title 属性更改窗口标题。

Game.Window.Title = "My Title Here";

其他窗口属性

以下是其他一些杂项窗口属性。

// 更改窗口不透明度
Game.Window.Opacity = 0.6f;

// 移除窗口边框
Game.Window.IsBorderless = true;

// 更改鼠标可见性
Game.Window.IsMouseVisible = false;

// 更改窗口位置
Game.Window.Position = new Int2(50, 50);

// 窗口获得焦点时为 true
var hasFocus = Game.Window.IsFocused;

// 窗口最小化时为 true
var minimized = Game.Window.IsMinimized;