using GFramework.Game.Abstractions.setting; using Godot; namespace GFramework.Godot.setting; /// /// Godot图形设置类,继承自GraphicsSettings并实现IApplyAbleSettings接口 /// 用于管理游戏的图形显示设置,包括分辨率、全屏模式等 /// public class GodotGraphicsSettings : GraphicsSettings, IApplyAbleSettings { /// /// 异步应用当前图形设置到游戏窗口 /// 该方法会根据设置的分辨率、全屏状态等参数调整Godot窗口的显示属性 /// /// 表示异步操作的任务 public async Task Apply() { var size = new Vector2I(ResolutionWidth, ResolutionHeight); // 直接调用DisplayServer API,不使用异步或延迟 // 1. 设置边框标志 DisplayServer.WindowSetFlag(DisplayServer.WindowFlags.Borderless, Fullscreen); // 2. 设置窗口模式 DisplayServer.WindowSetMode( Fullscreen ? DisplayServer.WindowMode.ExclusiveFullscreen : DisplayServer.WindowMode.Windowed ); // 3. 窗口化下设置尺寸和位置 if (!Fullscreen) { DisplayServer.WindowSetSize(size); // 居中窗口 var screen = DisplayServer.GetPrimaryScreen(); var screenSize = DisplayServer.ScreenGetSize(screen); var pos = (screenSize - size) / 2; DisplayServer.WindowSetPosition(pos); } await Task.CompletedTask; } }