窗口配置
初级
游戏窗口的属性可以通过代码控制。
目前,这无法在 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;