【Godot4】Autoloadをポーズ中も動かす2つの方法|Process ModeをAlwaysに設定
2026-01-10
Autoloadに登録したスクリプトでも、ゲームをポーズすると、通常は_process()などの処理が停止します。
ポーズ中も時間計測や入力処理を続けたい場合は、対象ノードのProcess ModeをAlwaysに設定します。
この記事では、シーンとスクリプト、それぞれをAutoloadに登録する場合の設定方法を紹介します。
前提知識
シングルトンの設定方法は以下の記事がわかりやすいです。

【Godot Engine 4】Godot Engineで2Dゲームを作るときに知っておきたい基本的な機能
zenn.dev/syun77/articles/a3d3dcbf260b90
環境
- Godot4.5
- GDScript
問題点
ポーズ画面やBGM管理などのずっと動き続けて欲しいシングルトンが、ゲーム全体をポーズさせると止まってしまいます。
例えば、_process()関数内でゲームの累計起動時間を計っている場合にポーズで止まっている時間は計測できません。
シングルトンがシーンの場合はインスペクターから、シーンのProcess Modeを”Always”に設定すればポーズ中も動いてくれます。
.gdファイル自体を選択したインスペクターでは、実行時に生成されるノードのProcess Modeを設定できません。

設定方法
問題を解決するための2つの方法があります。
方法1:シーンをAutoloadに登録し、ルートノードをAlwaysにする
まず、空のNodeを作成します。
次に、NodeのProcess ModeをAlwaysにし、Nodeにシングルトンにしたいプログラムをアタッチします。

作成したノードをルートとするシーンを、game_manager.tscn などの名前で保存します。
「プロジェクト → プロジェクト設定 → グローバル → 自動読み込み」を開き、保存した.tscn ファイルを登録します。

方法2:Autoloadスクリプトの_ready()でAlwaysを設定する
実はプログラム単体をシングルトンにしても、実行時にはNodeとしてシーンツリーに追加されます。
以下のコードを記述することでProcess Modeを”Always”にすることができます。
Autoloadに登録したスクリプトに記述します。既に_ready()がある場合は、その中に設定行を追加してください。
func _ready() -> void:
process_mode = Node.PROCESS_MODE_ALWAYS
下の画像ではプログラム(.gd)をシングルトンに追加したが、Nodeとして扱われています。
ゲームを実行し、シーンツリーを「リモート」に切り替えてGameManagerを選択すると、実行時のProcess Modeを確認できます。
ちゃんとProcess Modeが”Always”になっている。

まとめ
Autoloadノードの_process()などをポーズ中も実行するようにするには、
シーンを登録している場合はシーンのインスペクターからProcess ModeをAlwaysに設定するか、
スクリプトを直接登録している場合は_ready() 内でprocess_mode = Node.PROCESS_MODE_ALWAYS を記述すればよい。💯