別のシーンをスクリプト内で読み込むには、PackedScene
クラスを使用します。
手順としては次のとおりです。
- 別のシーンをロードする
- ロードしたシーンをインスタンス化して追加する
目次
別のシーンを呼び出す例
extends Node
# 別のシーンのパス
const OTHER_SCENE_PATH = "res://scenes/other_scene.tscn"
# 別のシーンをロードする変数
var other_scene: PackedScene
func _ready():
# ① 別のシーンをロードする
other_scene = load(OTHER_SCENE_PATH)
# ② ロードしたシーンをインスタンス化して追加する
var instance = other_scene.instance()
add_child(instance)
まず、load()
メソッドを使用して別のシーンをロードします。
このメソッドは、プロジェクト内のパスを引数として受け取ります。例えば、”res://scenes/other_scene.tscn” のような形式です。
load()
メソッドは PackedScene
オブジェクトを返すので、これを変数に格納します。上記の例で言うとother_scene = load(OTHER_SCENE_PATH)
の箇所です。
ロードしたシーンを使いたいタイミングで、PackedScene
オブジェクトの instance()
メソッドを呼び出してシーンをインスタンス化します。これにより、シーン内のノードツリーが作成されます。
別の方法:@exportアノテーションを使うやり方
@exportアノテーションを使うことで、インスペクタから別シーンを取り込めるので、こちらを使うとコード量が減ります。
extends Node
@export var other_scene: PackedScene
func _ready():
# シーンをインスタンス化して追加する
var instance = other_scene.instance()
add_child(instance)
インスペクタからother_sceneに読み込みたいシーンをセットしてください。
Comment