【Godot4】Autoloadをポーズ中も動かす2つの方法|Process ModeをAlwaysに設定

2026-01-10

Autoloadに登録したスクリプトでも、ゲームをポーズすると、通常は_process()などの処理が停止します。 ポーズ中も時間計測や入力処理を続けたい場合は、対象ノードのProcess ModeをAlwaysに設定します。

この記事では、シーンとスクリプト、それぞれをAutoloadに登録する場合の設定方法を紹介します。

前提知識

シングルトンの設定方法は以下の記事がわかりやすいです。

環境

  • Godot4.5
  • GDScript

問題点

ポーズ画面やBGM管理などのずっと動き続けて欲しいシングルトンが、ゲーム全体をポーズさせると止まってしまいます。

例えば、_process()関数内でゲームの累計起動時間を計っている場合にポーズで止まっている時間は計測できません。

シングルトンがシーンの場合はインスペクターから、シーンのProcess Modeを”Always”に設定すればポーズ中も動いてくれます。

.gdファイル自体を選択したインスペクターでは、実行時に生成されるノードのProcess Modeを設定できません。

画像1 インスペクターにProcess Modeが存在しない
画像1 インスペクターにProcess Modeが存在しない

設定方法

問題を解決するための2つの方法があります。

方法1:シーンをAutoloadに登録し、ルートノードをAlwaysにする

まず、空のNodeを作成します。

次に、NodeのProcess ModeをAlwaysにし、Nodeにシングルトンにしたいプログラムをアタッチします。

画像2 NodeのProcess Modeを”Always”に、プログラムをアタッチ
画像2 NodeのProcess Modeを”Always”に、プログラムをアタッチ

作成したノードをルートとするシーンを、game_manager.tscn などの名前で保存します。

「プロジェクト → プロジェクト設定 → グローバル → 自動読み込み」を開き、保存した.tscn ファイルを登録します。

画像3 作成したNodeをシングルトンに設定
画像3 作成したNodeをシングルトンに設定

方法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”になっている。

画像4 実行中のGameManagerをリモートのシーンツリーで選択し、Process ModeがAlwaysになっていることを確認した画面
画像4 実行中のGameManagerをリモートのシーンツリーで選択し、Process ModeがAlwaysになっていることを確認した画面

まとめ

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

Godotゲーム開発ブログ