generated from krampus/template-godot4
Fixed loading screen transition sequencing
This commit is contained in:
parent
2583f39252
commit
6fad9af2a2
|
@ -58,28 +58,26 @@ func _ready() -> void:
|
||||||
##
|
##
|
||||||
## The loading screen will be shown until the scene is loaded.
|
## The loading screen will be shown until the scene is loaded.
|
||||||
func queue_scene(path: String) -> Promise:
|
func queue_scene(path: String) -> Promise:
|
||||||
if not loading_screen.visible:
|
return queue_load(path, ScenePromise.new(), "PackedScene").finally(_finish_scene_load)
|
||||||
loading_screen.show()
|
|
||||||
loading_screen.modulate = Color.WHITE
|
|
||||||
|
|
||||||
for child: Node in content.get_children():
|
|
||||||
child.queue_free()
|
|
||||||
|
|
||||||
return queue_load(path, ScenePromise.new()).finally(_finish_scene_load)
|
|
||||||
|
|
||||||
|
|
||||||
## Queue a resource to be loaded in the background.
|
## Queue a resource to be loaded in the background.
|
||||||
##
|
##
|
||||||
## Returns a `Promise` which can be used to attach callbacks
|
## Returns a `Promise` which can be used to attach callbacks
|
||||||
## which will be called with the resource after it is loaded.
|
## which will be called with the resource after it is loaded.
|
||||||
func queue_load(path: String, promise: Promise = null) -> Promise:
|
func queue_load(path: String, promise: Promise = null, type_hint: String = "") -> Promise:
|
||||||
if not promise:
|
if not promise:
|
||||||
promise = Promise.new()
|
promise = Promise.new()
|
||||||
_loading_resources[path] = promise
|
_loading_resources[path] = promise
|
||||||
ResourceLoader.load_threaded_request(path)
|
ResourceLoader.load_threaded_request(path, type_hint)
|
||||||
return promise
|
return promise
|
||||||
|
|
||||||
|
|
||||||
|
func _unload_content() -> void:
|
||||||
|
for child: Node in content.get_children():
|
||||||
|
child.queue_free()
|
||||||
|
|
||||||
|
|
||||||
func _finish_scene_load(instance: Node) -> void:
|
func _finish_scene_load(instance: Node) -> void:
|
||||||
content.add_child(instance)
|
content.add_child(instance)
|
||||||
instance.reparent(content)
|
instance.reparent(content)
|
||||||
|
@ -89,6 +87,9 @@ func _process(_delta: float) -> void:
|
||||||
if _loading_resources and not loading_screen.visible:
|
if _loading_resources and not loading_screen.visible:
|
||||||
loader_transition.play("fade_in")
|
loader_transition.play("fade_in")
|
||||||
|
|
||||||
|
if loader_transition.is_playing():
|
||||||
|
return
|
||||||
|
|
||||||
for key: String in _loading_resources.keys():
|
for key: String in _loading_resources.keys():
|
||||||
match ResourceLoader.load_threaded_get_status(key):
|
match ResourceLoader.load_threaded_get_status(key):
|
||||||
ResourceLoader.THREAD_LOAD_LOADED:
|
ResourceLoader.THREAD_LOAD_LOADED:
|
||||||
|
|
|
@ -38,7 +38,7 @@ tracks/1/keys = {
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_2c1ud"]
|
[sub_resource type="Animation" id="Animation_2c1ud"]
|
||||||
resource_name = "fade_in"
|
resource_name = "fade_in"
|
||||||
length = 0.4
|
length = 0.2
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
|
@ -58,11 +58,25 @@ tracks/1/path = NodePath(".:modulate")
|
||||||
tracks/1/interp = 2
|
tracks/1/interp = 2
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
"times": PackedFloat32Array(0, 0.4),
|
"times": PackedFloat32Array(0, 0.2),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||||
}
|
}
|
||||||
|
tracks/2/type = "method"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("%RootControl/..")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0.2),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"values": [{
|
||||||
|
"args": [],
|
||||||
|
"method": &"_unload_content"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_xbqy2"]
|
[sub_resource type="Animation" id="Animation_xbqy2"]
|
||||||
resource_name = "fade_out"
|
resource_name = "fade_out"
|
||||||
|
@ -114,6 +128,7 @@ grow_vertical = 2
|
||||||
|
|
||||||
[node name="LoadingScreen" type="Control" parent="RootControl"]
|
[node name="LoadingScreen" type="Control" parent="RootControl"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
process_mode = 3
|
||||||
z_index = 128
|
z_index = 128
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
|
|
|
@ -125,6 +125,18 @@ tracks/0/keys = {
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:modulate")
|
||||||
|
tracks/1/interp = 2
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s1eyj"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_s1eyj"]
|
||||||
_data = {
|
_data = {
|
||||||
|
|
|
@ -1480,7 +1480,7 @@ grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="PressStart" type="Label" parent="Menu"]
|
[node name="PressStart" type="Label" parent="Menu"]
|
||||||
modulate = Color(1, 1, 1, 0.997997)
|
modulate = Color(1, 1, 1, 0.0282702)
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 8
|
anchors_preset = 8
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
|
|
Loading…
Reference in New Issue