シーン管理
シーン管理は自動読み込み
という仕組みを使います 管理するスクリプトをプロジェクト
>プロジェクト設定
>自動読み込み
ページでスクリプトを選択して名前をつけて登録することで簡単に使うことができます
シーン切り替えスクリプト
スタートシーンからメインシーンへの遷移を作成します
res://Game.tscn
を作成します
extends Node
var current_scene = null
func goto_scene(scene):
call_deferred("async_goto_scene", scene)
func async_goto_scene(scene):
if current_scene:
current_scene.free()
var s = ResourceLoader.load(scene)
current_scene = s.instance()
get_tree().get_root().add_child(current_scene)
get_tree().set_current_scene(current_scene)
call_deferred
はアイドル時間に呼ばれる関数です
GlobalにGame
クラスを登録したのでシーンの中で呼びます
スタートシーン
res://scenes/Start.tscn
[gd_scene load_steps=2 format=2]
[ext_resource path="res://scenes/Start.gd" type="Script" id=1]
[node name="Control" type="Node"]
script = ExtResource( 1 )
[node name="Button" type="Button" parent="."]
margin_left = 474.0
margin_top = 290.0
margin_right = 549.0
margin_bottom = 310.0
text = "goto Main"
res://scenes/Start.gd
extends Node
onready var button = $Button
var next = "res://scenes/Main.tscn"
func _ready():
button.connect("pressed", self, "goto")
func goto():
Game.goto_scene(next)
メインシーン
res://scenes/Main.tscn
[gd_scene load_steps=2 format=2]
[ext_resource path="res://scenes/Main.gd" type="Script" id=1]
[node name="Control" type="Node"]
script = ExtResource( 1 )
[node name="Button" type="Button" parent="."]
margin_left = 475.0
margin_top = 290.0
margin_right = 548.0
margin_bottom = 310.0
text = "goto Start"
res://scenes/Main.gd
extends Node
onready var button = $Button
var next = "res://scenes/Start.tscn"
func _ready():
button.connect("pressed", self, "goto")
func goto():
Game.goto_scene(next)
スタートシーンから始まるようにする
Application
>Run
>Main Scene
にスタートシーンを設定します
実行
これで再生ボタンを押せばシーンが切り替わったはずです