Godot 4 | ルートのシーンが2回読み込まれる原因と解決策

Godot 4,Godot 4 トラブルシューティング

Godot 4 | ルートのシーンが2回読み込まれる原因と解決策

Godotでルートのシーンに設定しているノードやスクリプトが2回読み込まれる原因と解決策について紹介しています。

確認環境
  • Windows11 22H2
  • Godot v4.2 rc1

ルートのシーンが2回読み込まれる原因

ルートのシーンが2回読み込まれる原因には、主に以下の可能性が考えられます。

  • 別のScriptからルートのシーンを読み込んでいる
  • プロジェクト設定の「自動読み込み」に設定している

おそらく、別のスクリプトからルートのシーンを読み込んでいるというケースよりも、ルートに設定しているシーンを「自動読み込み」にも設定しているケースを疑うと良いかも知れません。

ルートのシーンにグローバル変数を設定している場合「自動読み込み」にも設定する事になり2重にシーンを読み込んでしまっています。

設定環境によってV4.2~のバージョンから発生しやすくなっている可能性があります。

ルートのシーンが2回読み込まれる問題の解決策

ルートのシーンにアタッチしているスクリプトにあるグローバル変数を、別のスクリプトに記述する事で問題は解決します。

プロジェクト設定の「自動読み込み」はスクリプト単体も追加する事ができますので「global.gd」といったスクリプトファイルを作成して追加します。

「global.gd」にグローバル変数にしたい変数を記述して保存、グローバル設定の「自動読み込み」に追加します。

「extends Node」は必要ですが、他は必要ありません。

extends Node
var variable = 1

スクリプトはファイルシステム上でも新規作成する事が可能です。

ファイルシステムにスクリプトを作成
ファイルシステムにスクリプトを作成

グローバル設定の「自動読み込み」にて作成した「global.gd」を追加しています。
ハイフンなどは消え、ファイル名の頭文字が小文字でも名前の頭文字は大文字になります。

プロジェクト設定の自動読み込みにスクリプトを追加
プロジェクト設定の自動読み込みにスクリプトを追加

名前(サンプルではGlobal)を使ってゲーム上にある別のスクリプトから設定したグローバル変数を呼び出す事が可能になります。

print(Global.variable)

「global.gd」でなくてもグローバル変数を保存しておきたいスクリプトのファイル名は任意で決定できます。