godot顯示設定


紀錄godot 4中設定視窗大小、全螢幕、無痕的方式。

方法

改變視窗大小
使用Vector2i指定寬高

var screen_size = Vector2i(1280 ,720)
DisplayServer.window_set_size(screen_size)

如果需要取得螢幕大小來設定的話可以使用screen_get_size()

#將視窗設定為螢幕大小
DisplayServer.window_set_size(DisplayServer.screen_get_size())

視窗模式
切換window_set_mode設定視窗模式,window_set_flag調整有無顯示標題來達成
下方展示
0:視窗模式
1全螢幕
2無邊界模式

var screen_mode: int = 0

	match screen_mode:
		0:
			DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
			DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, false)
		1:
			DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN)
			DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, false)
		2:
			DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
			DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, true)

垂直同步,設定對應值即可
0:off
1:Normal
2:Adaptative
3:MailBox

var vsync: int = 0
DisplayServer.window_set_vsync_mode(vsync)

整合

var screen_size = Vector2i(1280 ,720)
var screen_mode: int = 0
var vsync: int = 0

# 設定畫面
func change_video_set() -> void:
	DisplayServer.window_set_size(screen_size)
	match screen_mode:
		0:
			DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
			DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, false)
		1:
			DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN)
			DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, false)
		2:
			DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
			DisplayServer.window_set_flag(DisplayServer.WINDOW_FLAG_BORDERLESS, true)
	DisplayServer.window_set_vsync_mode(vsync)

參考資料

DisplayServer — Godot Engine (4.x) 正體中文 (台灣) 文件

Tags : godot