Godot4でGDScriptを使ってウィンドウモードとフルスクリーンモードを切り替えたい!
概要
今回の記事では、Godot4でGDScriptを使ってウィンドウモードとフルスクリーンモードを切り替える手順を掲載する。
この記事でのフルスクリーンモードは、ディスプレイの解像度を変えずにウィンドウをディスプレイいっぱいに表示するモードを指す。DirctXでいう排他モードではない。
仕様書
環境
- Gogot 4.0
手順書
下記はui_cancel(デフォルトではESC)の入力がある度に現在のウィンドウモードを取得して、ウィンドウ表示であればフルスクリーン表示に、フルスクリーン表示であればウィンドウ表示に切り替える例。
func _input(event):
    if Input.is_action_just_pressed("ui_cancel"):
        if DisplayServer.window_get_mode() == DisplayServer.WindowMode.WINDOW_MODE_FULLSCREEN:
            DisplayServer.window_set_mode(DisplayServer.WindowMode.WINDOW_MODE_WINDOWED)
        else:
            DisplayServer.window_set_mode(DisplayServer.WindowMode.WINDOW_MODE_FULLSCREEN)DisplayServer.window_get_mode()で現在のウィンドウモードを取得する。
DisplayServer.window_set_mode()でウィンドウモードを変更する。
第1引数に列挙型WindowModeを渡すことで任意のウィンドウモードを指定できる。指定できるウィンドウモードは下記参照。
| WindowMode | メニュー表示 | 解像度の変更 | 説明 | 
|---|---|---|---|
| WINDOW_MODE_WINDOWED | あり(オプションで非表示可) | なし | ウィンドウ表示。 | 
| WINDOW_MODE_MINIMIZED | なし | ウィンドウ表示。最小化。 | なし | 
| WINDOW_MODE_MAXIMIZED | あり(オプションで非表示可) | なし | ウィンドウ表示。最大化。 | 
| WINDOW_MODE_FULLSCREEN | なし | なし | フルスクリーン表示。 | 
| WINDOW_MODE_EXCLUSIVE_FULLSCREEN | なし | あり | フルスクリーン表示。DirectXでいう排他モード。 | 
まとめ(感想文)
WINDOW_MODE_EXCLUSIVE_FULLSCREENみたいな排他モードって、昔はゲームではよく疲れてたんだけども。デスクトップのアイコンがぐちゃぐちゃになったり、マルチディスプレイ環境だとウィンドウの配置がぐちゃぐちゃになったりすることもあってなのか最近のゲームでは実装されてないものも散見される今日この頃。
個人的には現在のゲームアプリでは排他モードは実装なくても良いと思ふ。

