タイトルから始めて、死んだらゲームオーバー、Enter で再挑戦、という1周の流れは、Godot ではシーンを切り替えて作ります。再挑戦では、HPや残り時間と一緒にスコアも0から始め直します。
ところが、スコアだけ前の数のまま残ることがあります。死んだ瞬間に0を代入すると、今度はゲームオーバー画面の点数が消えます。シーンを替えると中のノードは作り直されますが、シーンの外に置いたスコアはそのまま残るからです。
この記事では、シーンを替えたときに何が消えて何が残るのかを押さえて、スコアを0に戻す場所を1か所に決める方法を解説します。
この記事でわかること
- シーンの切り替えで作り直されるものと残るもの、3つの値をどこに置くか
- スコアを0に戻す役を1か所に決める理由と、死んだときに触らない理由
change_scene_to_file()を呼んだ直後に何が起きているかreload_current_scene()が効く場所
動作確認環境: Godot 4.7
Sponsored
目次
シーンの切り替えで作り直されるものと残るもの
get_tree().change_scene_to_file("res://play.tscn") を呼ぶと、いまのシーンとその中のノードはすべて捨てられます。代わりに、指定したシーンが新しく作り直されます。res:// は、プロジェクトのフォルダから見たパスです。
作り直されたノードの変数は、書いたとおりの初期値から始まります。var hp := 3 と書いてあれば3です。前のプレイで0になっていても関係ありません。
残るのは、そのシーンの外にいるものです。Autoload に登録したノードがこれにあたります。ゲームが起動したときに1度だけ作られて、シーンが何度入れ替わってもそのまま居続けます。
