编写 ProAnimatedSprite2D 与其插件

This commit is contained in:
cakipaul 2025-01-23 21:13:40 +08:00
parent 055b9dd1f8
commit b58cbe3e66
113 changed files with 1034 additions and 474 deletions

View File

@ -11,6 +11,24 @@
- [DialogueManager 使用与维护说明](https://docs.qq.com/doc/DWG5vaEZ1Qk9EdVVw)
- [GIF 插件](https://godotengine.org/asset-library/asset/2255)
### ProAnimatedSprite2D
插件路径addons/property-inspector/pro_animation_sprite2d
![ProAnimatedSprite2D 配置示例](readme_image/image.png)
ProAnimatedSprite2D增强 AnimatedSprite2D 的表现,在其基础上增加:
1. 播放+移动:播放特定动画时自动移动,可配置移速
2. 播放某动画后自动跳转:播放一个动画结束后,自动播放另一个
3. 自动跳转可以设置循环播放次数,若干次后再跳转
4. 跳转前可以等待 wait_time 时长
其中:
1. action configs 配置动画跳转逻辑
2. move configs 配置播放特定动画时的移动速度
## Ground 与 GroundLoader
- 正常游戏Main -> GroundLoader -> Ground

View File

@ -58,6 +58,7 @@ static var MUTEX = Mutex.new()
const gif_dir = "res://asset/art/gif/"
func _import(source_file, save_path, options, platform_variants, gen_files):
if GifManager == null:
printerr("GifManager is not available!")
@ -101,6 +102,8 @@ func _import(source_file, save_path, options, platform_variants, gen_files):
texture = ImageTexture.create_from_image(image)
texture.take_over_path(image_path)
var duration = frames.get_frame_duration("gif", i)
# 去除导入 sprite_frames 的动画名中的特殊符号 「-」
animation_name = animation_name.replace("-", "")
sprite_frames.add_frame(animation_name, texture, duration)
print_debug("Created images and added to SpriteFrames: ", animation_name)
ResourceSaver.save(sprite_frames)

View File

@ -2,7 +2,6 @@
extends EditorPlugin
var import_sprite_frames_plugin
# var post_import_plugin
func _enter_tree():

View File

@ -0,0 +1,21 @@
extends EditorInspectorPlugin
var move_editor = preload("pro_animation_sprite2d/pro_animation_move_editor.gd")
var action_editor = preload("pro_animation_sprite2d/pro_animation_action_editor.gd")
func _can_handle(object):
return object is ProAnimatedSprite2D
func _parse_property(object, type, name, hint_type, hint_string, usage_flags, wide):
# var properties: PackedStringArray = ["action_configs", "move_configs"]
# add_property_editor_for_multiple_properties("配置", properties, action_editor.instantiate())
if name == "move_configs":
add_property_editor(name, move_editor.new())
return true
elif name == "action_configs":
add_property_editor(name, action_editor.new())
return true
else:
return false

View File

@ -0,0 +1,7 @@
[plugin]
name="Property Inspector"
description="项目自定义资源检视器"
author="cakipaul"
version="1.0"
script="plugin.gd"

View File

@ -0,0 +1,13 @@
@tool
extends EditorPlugin
var inspector
func _enter_tree():
inspector = preload("inspector.gd").new()
add_inspector_plugin(inspector)
func _exit_tree():
remove_inspector_plugin(inspector)

View File

@ -0,0 +1,101 @@
@tool
class_name ProAnimatedSprite2D extends AnimatedSprite2D
@export var autostart := true
# 从 intro 到 next 的配置信息
# {
# "animation_intro": "",
# "intro_loop": 1,
# "animation_wait_time": 0.0,
# "animation_next": ""
# }
@export var action_configs: Array[Dictionary] = []
# {
# "animation": "",
# "velocity": Vector2(0, 0)
# }
@export var move_configs: Array[Dictionary] = []
# 从 intro 到 next 的配置信息
var auto_checkout_dict = {
# intro -> {state_config instance}
}
# 播放 animation 的同时,进行移动
var animation_velocity = {
# animation -> velocity
}
func _ready() -> void:
if Engine.is_editor_hint():
return
_load_config()
if autostart and animation:
# 制造一点错差
frame = randi() % sprite_frames.get_frame_count(animation)
play()
animation_finished.connect(_on_animation_finished)
animation_changed.connect(_on_animation_start)
animation_looped.connect(_on_animation_start)
func _load_config():
# load auto_checkout_dict
for i in range(action_configs.size()):
var state_config = action_configs[i]
if sprite_frames and sprite_frames.has_animation(state_config.animation_intro):
# intro 的 animation 关闭循环
sprite_frames.set_animation_loop(state_config.animation_intro, false)
auto_checkout_dict[state_config.animation_intro] = action_configs[i]
# load animation_frame_offsets
for i in range(move_configs.size()):
var move_config = move_configs[i]
if sprite_frames and sprite_frames.has_animation(move_config.animation):
animation_velocity[move_config.animation] = move_config.velocity
func _reset_loop(intro: String):
for c in action_configs:
if c.animation_intro == intro:
auto_checkout_dict[intro].intro_loop = max(1, c.intro_loop)
func _on_animation_finished() -> void:
var intro = animation
if auto_checkout_dict.has(intro):
auto_checkout_dict[intro].intro_loop -= 1
if auto_checkout_dict[intro].intro_loop <= 0:
# reset loop
_reset_loop(intro)
var wait_time = auto_checkout_dict[intro].animation_wait_time
var next = auto_checkout_dict[intro].animation_next
if wait_time > 0:
pause()
get_tree().create_timer(wait_time).timeout.connect(play.bind(next))
else:
play(next)
var velocity := Vector2.ZERO
func _on_animation_start():
if not animation or not animation_velocity.has(animation):
velocity = Vector2.ZERO
return
velocity = animation_velocity[animation] * speed_scale
if GlobalConfig.DEBUG:
print("animation ", animation, " velocity=", velocity)
func _physics_process(delta: float) -> void:
if Engine.is_editor_hint() or not animation or not velocity:
return
position += velocity * delta
# temporary set velocity
func set_animation_velocity(anim: String, v: Vector2) -> void:
animation_velocity[anim] = v
if GlobalConfig.DEBUG:
print("set_animation_velocity:", anim, v)

View File

@ -0,0 +1,7 @@
[gd_scene load_steps=2 format=3 uid="uid://b50n0hvs4yh75"]
[ext_resource type="Script" path="res://addons/property-inspector/pro_animation_sprite2d/autoplay_animated_sprite.gd" id="1_21eda"]
[node name="AutoplayAnimatedSprite" type="AnimatedSprite2D"]
position = Vector2(-1, -1)
script = ExtResource("1_21eda")

View File

@ -0,0 +1,160 @@
extends EditorProperty
# The main control for editing the property.
var v_box := VBoxContainer.new()
var line_nodes := []
# An internal value of the property.
# A guard against internal changes when the property is updated.
var updating = false
var property_name = "action_configs"
func _init():
# Add a button to add a new element.
var button = Button.new()
button.text = "Add"
button.icon = EditorInterface.get_editor_theme().get_icon("Add", "EditorIcons")
button.pressed.connect(_add_line.bind(true))
add_child(button)
add_child(v_box)
set_bottom_editor(v_box)
# Make sure the control is able to retain the focus.
add_focusable(v_box)
func _add_line(check_updating := false):
if check_updating and updating:
return
var updated := false
# 最后一个是 add button所以 -1
var id = line_nodes.size()
if id >= _get_property().size():
_get_property().append(_new_res())
updated = true
if _get_property()[id].is_empty():
_get_property()[id] = _new_res()
updated = true
var line_box = VBoxContainer.new()
line_box.add_child(HSeparator.new())
var h_box = HBoxContainer.new()
# add label
var label = Label.new()
label.text = "intro"
h_box.add_child(label)
# add animation intro line edit
var line_edit = LineEdit.new()
line_edit.text = str(_get_property()[id].animation_intro)
h_box.add_child(line_edit)
# line_edit.custom_minimum_size.x = 50
line_edit.expand_to_text_length = true
line_edit.focus_exited.connect(_on_line_edit_text_submitted.bind(line_edit, id, "animation_intro"))
line_edit.text_submitted.connect(_on_line_edit_text_submitted.bind(id, "animation_intro"))
# next row
line_box.add_child(h_box)
h_box = HBoxContainer.new()
# add label
label = Label.new()
label.text = "loop:"
h_box.add_child(label)
# add line edit
line_edit = LineEdit.new()
line_edit.text = str(_get_property()[id].intro_loop)
h_box.add_child(line_edit)
line_edit.focus_exited.connect(_on_line_edit_text_submitted.bind(line_edit, id, "intro_loop"))
line_edit.text_submitted.connect(_on_line_edit_text_submitted.bind(id, "intro_loop"))
# add label
label = Label.new()
label.text = "wait_time:"
h_box.add_child(label)
# add line edit
line_edit = LineEdit.new()
line_edit.text = str(_get_property()[id].animation_wait_time)
h_box.add_child(line_edit)
line_edit.focus_exited.connect(_on_line_edit_text_submitted.bind(line_edit, id, "animation_wait_time"))
line_edit.text_submitted.connect(_on_line_edit_text_submitted.bind(id, "animation_wait_time"))
# next row
line_box.add_child(h_box)
h_box = HBoxContainer.new()
# add label
label = Label.new()
label.text = "next:"
h_box.add_child(label)
# add animation next edit
line_edit = LineEdit.new()
line_edit.text = str(_get_property()[id].animation_next)
h_box.add_child(line_edit)
line_edit.expand_to_text_length = true
line_edit.focus_exited.connect(_on_line_edit_text_submitted.bind(line_edit, id, "animation_next"))
line_edit.text_submitted.connect(_on_line_edit_text_submitted.bind(id, "animation_next"))
# add delete button
var button = Button.new()
button.icon = EditorInterface.get_editor_theme().get_icon("Remove", "EditorIcons")
button.pressed.connect(_on_delete_button_pressed.bind(id))
h_box.add_child(button)
line_box.add_child(h_box)
v_box.add_child(line_box)
line_nodes.append(line_box)
if updated:
emit_changed(property_name, _get_property())
func _new_res() -> Dictionary:
var res = {
"animation_intro": "",
"intro_loop": 1,
"animation_wait_time": 0.0,
"animation_next": ""
}
if get_edited_object().animation:
res.animation_intro = get_edited_object().animation
return res
func _get_property() -> Array[Dictionary]:
return get_edited_object()[property_name]
func _on_line_edit_text_submitted(text, id, property):
if updating:
return
if text is LineEdit:
text = text.text
# update the property by id
if property == "animation_intro":
_get_property()[id].animation_intro = text
elif property == "intro_loop":
_get_property()[id].intro_loop = max(1, int(text))
elif property == "animation_wait_time":
_get_property()[id].animation_wait_time = max(0, float(text))
elif property == "animation_next":
_get_property()[id].animation_next = text
emit_changed(property_name, _get_property())
func _on_delete_button_pressed(id):
if updating:
return
# delete the line by id
line_nodes[id].queue_free()
_get_property().remove_at(id)
refresh_controls()
emit_changed(property_name, _get_property())
func _update_property():
# Read the current value from the property.
var new_value = get_edited_object()[property_name]
# Update the control with the new value.
updating = true
refresh_controls()
updating = false
func refresh_controls():
# Clear the control.
for l in line_nodes:
l.queue_free()
line_nodes.clear()
# Add a line for each element in the property.
for i in range(_get_property().size()):
_add_line()

View File

@ -0,0 +1,143 @@
extends EditorProperty
# The main control for editing the property.
var v_box := VBoxContainer.new()
var line_nodes := []
# An internal value of the property.
# A guard against internal changes when the property is updated.
var updating = false
var property_name = "move_configs"
func _init():
# Add a button to add a new element.
var button = Button.new()
button.text = "Add"
button.icon = EditorInterface.get_editor_theme().get_icon("Add", "EditorIcons")
button.pressed.connect(_add_line.bind(true))
add_child(button)
# Add the control as a direct child of EditorProperty node.
add_child(v_box)
set_bottom_editor(v_box)
# Make sure the control is able to retain the focus.
add_focusable(v_box)
func _add_line(check_updating := false):
if check_updating and updating:
return
var updated := false
# 最后一个是 add button所以 -1
var id = line_nodes.size()
if id >= _get_property().size():
_get_property().append(_new_res())
updated = true
if _get_property()[id].is_empty():
_get_property()[id] = _new_res()
updated = true
var line_box = VBoxContainer.new()
line_box.add_child(HSeparator.new())
var h_box = HBoxContainer.new()
# add label
var label = Label.new()
label.text = "anim"
h_box.add_child(label)
# add animation line edit
var line_edit = LineEdit.new()
line_edit.text = str(_get_property()[id].animation)
h_box.add_child(line_edit)
# line_edit.custom_minimum_size.x = 50
line_edit.expand_to_text_length = true
line_edit.focus_exited.connect(_on_line_edit_text_submitted.bind(line_edit, id, "animation"))
line_edit.text_submitted.connect(_on_line_edit_text_submitted.bind(id, "animation"))
line_box.add_child(h_box)
h_box = HBoxContainer.new()
# add label
label = Label.new()
label.text = "velocity x"
h_box.add_child(label)
# add velocity.x line edit
line_edit = LineEdit.new()
line_edit.text = str(_get_property()[id].velocity.x)
h_box.add_child(line_edit)
line_edit.focus_exited.connect(_on_line_edit_text_submitted.bind(line_edit, id, "velocity:x"))
line_edit.text_submitted.connect(_on_line_edit_text_submitted.bind(id, "velocity:x"))
# add label
label = Label.new()
label.text = "y"
h_box.add_child(label)
# add velocity.y line edit
line_edit = LineEdit.new()
line_edit.text = str(_get_property()[id].velocity.y)
h_box.add_child(line_edit)
line_edit.focus_exited.connect(_on_line_edit_text_submitted.bind(line_edit, id, "velocity:y"))
line_edit.text_submitted.connect(_on_line_edit_text_submitted.bind(id, "velocity:y"))
# add delete button
var button = Button.new()
button.icon = EditorInterface.get_editor_theme().get_icon("Remove", "EditorIcons")
button.pressed.connect(_on_delete_button_pressed.bind(id))
h_box.add_child(button)
line_box.add_child(h_box)
v_box.add_child(line_box)
line_nodes.append(line_box)
if updated:
emit_changed(property_name, _get_property())
func _new_res() -> Dictionary:
var res = {
"animation": "",
"velocity": Vector2(0, 0)
}
if get_edited_object().animation:
res.animation = get_edited_object().animation
return res
func _get_property() -> Array[Dictionary]:
return get_edited_object()[property_name]
func _on_line_edit_text_submitted(text, id, property):
if updating:
return
if text is LineEdit:
text = text.text
# update the property by id
if property == "animation":
_get_property()[id].animation = text
elif property == "velocity:x":
_get_property()[id].velocity.x = float(text)
elif property == "velocity:y":
_get_property()[id].velocity.y = float(text)
emit_changed(property_name, _get_property())
func _on_delete_button_pressed(id):
if updating:
return
# delete the line by id
line_nodes[id].queue_free()
_get_property().remove_at(id)
refresh_controls()
emit_changed(property_name, _get_property())
func _update_property():
# Read the current value from the property.
var new_value = get_edited_object()[property_name]
# Update the control with the new value.
updating = true
refresh_controls()
updating = false
func refresh_controls():
# Clear the control.
for l in line_nodes:
l.queue_free()
line_nodes.clear()
# Add a line for each element in the property.
for i in range(_get_property().size()):
_add_line()

View File

@ -0,0 +1,4 @@
class_name StateMoveConfigResource extends Resource
@export var animation := ""
@export var velocity := Vector2(0, 0)

View File

@ -3,29 +3,22 @@
[ext_resource type="Texture2D" uid="uid://ciai4wast4i2a" path="res://asset/art/gif/c01_孤儿院围墙/【画画小女孩】回头/0.png" id="1_0n0k8"]
[ext_resource type="Texture2D" uid="uid://pabw11j5ifdw" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-2】画画/0.png" id="1_3rkvk"]
[ext_resource type="Texture2D" uid="uid://cmytg1u3kdc6c" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-2】呼吸/0.png" id="1_4b3ec"]
[ext_resource type="Texture2D" uid="uid://bl62sfnedwjy8" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/0.png" id="1_4vplq"]
[ext_resource type="Texture2D" uid="uid://duwwu5rnhutvk" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-侧面呼吸/0.png" id="1_77bb6"]
[ext_resource type="Texture2D" uid="uid://cgghnwtl1v7a" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】走路/0.png" id="1_85ax1"]
[ext_resource type="Texture2D" uid="uid://b7dvlp7s1ncvo" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/0.png" id="1_bpqhs"]
[ext_resource type="Texture2D" uid="uid://d3qabg8euxurs" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-1】画画/0.png" id="1_ce2kb"]
[ext_resource type="Texture2D" uid="uid://bjpipjewo7odc" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-呼吸/0.png" id="1_emhxq"]
[ext_resource type="Texture2D" uid="uid://8fjdofq2iqee" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】侧面呼吸/0.png" id="1_erwxy"]
[ext_resource type="Texture2D" uid="uid://3l14us7miv7w" path="res://asset/art/gif/c01_孤儿院围墙/【画画小女孩】呼吸/0.png" id="1_ethui"]
[ext_resource type="Texture2D" uid="uid://bcy17cx5x8xis" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-1】呼吸/0.png" id="1_h88pt"]
[ext_resource type="Texture2D" uid="uid://daxaq4nafjhoy" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】侧面呼吸/0.png" id="1_kul8c"]
[ext_resource type="Texture2D" uid="uid://ln5ne85pwgyg" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】转身/0.png" id="1_lgncd"]
[ext_resource type="Texture2D" uid="uid://ckch7g7cw2bdh" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面呼吸/0.png" id="1_mo286"]
[ext_resource type="Texture2D" uid="uid://23i4l8ss2ua4" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】转身/0.png" id="1_nmddb"]
[ext_resource type="Texture2D" uid="uid://thyfxc0n287w" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】呼吸/0.png" id="1_nqakl"]
[ext_resource type="Texture2D" uid="uid://vvbcpjwagqwo" path="res://asset/art/gif/c01_孤儿院围墙/【画画小女孩】画画/0.png" id="1_p0te0"]
[ext_resource type="Texture2D" uid="uid://wimhgx3c7yu0" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】呼吸/0.png" id="1_qh04w"]
[ext_resource type="Texture2D" uid="uid://dqes07nl0cpme" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/0.png" id="1_qo83r"]
[ext_resource type="Texture2D" uid="uid://cp3wrc6vm42np" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】侧面呼吸/0.png" id="1_s4rfr"]
[ext_resource type="Texture2D" uid="uid://c0kjvl5d7aex3" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/0.png" id="1_t07xp"]
[ext_resource type="Texture2D" uid="uid://b3o5yp8l63sab" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】走路/0.png" id="1_yvvhl"]
[ext_resource type="Texture2D" uid="uid://cag2ms3mnx3nj" path="res://asset/art/gif/c01_孤儿院围墙/【画画小女孩】呼吸/1.png" id="2_1hhev"]
[ext_resource type="Texture2D" uid="uid://daxewbhvtjfff" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-2】画画/1.png" id="2_5i5of"]
[ext_resource type="Texture2D" uid="uid://dpqrcyjh7xy7o" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/1.png" id="2_7vqsn"]
[ext_resource type="Texture2D" uid="uid://dn1qh6edtq0ir" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-2】呼吸/1.png" id="2_8b3yn"]
[ext_resource type="Texture2D" uid="uid://w3y5pcq1kert" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】呼吸/1.png" id="2_85obh"]
[ext_resource type="Texture2D" uid="uid://d3s44frsq7g6f" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】转身/1.png" id="2_b2ha5"]
@ -34,24 +27,16 @@
[ext_resource type="Texture2D" uid="uid://o6jr1qlnuubi" path="res://asset/art/gif/c01_孤儿院围墙/【画画小女孩】回头/1.png" id="2_gc6kb"]
[ext_resource type="Texture2D" uid="uid://q0rjhq5alio2" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】侧面呼吸/1.png" id="2_ir4mj"]
[ext_resource type="Texture2D" uid="uid://d2tlelc52io0c" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】走路/1.png" id="2_kp77c"]
[ext_resource type="Texture2D" uid="uid://bs4mc2aspt0jx" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/1.png" id="2_lbw4p"]
[ext_resource type="Texture2D" uid="uid://5g7h7yrbd2tp" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/1.png" id="2_o8feq"]
[ext_resource type="Texture2D" uid="uid://by3cduy6cnll5" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-呼吸/1.png" id="2_ormam"]
[ext_resource type="Texture2D" uid="uid://bna3mk142wj61" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/1.png" id="2_sepw4"]
[ext_resource type="Texture2D" uid="uid://cyk0pd7xro2cg" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-1】呼吸/1.png" id="2_stfxp"]
[ext_resource type="Texture2D" uid="uid://cusyrg8vexeex" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】侧面呼吸/1.png" id="2_u4bbj"]
[ext_resource type="Texture2D" uid="uid://vrerqr5cbcr5" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】侧面呼吸/1.png" id="2_udev2"]
[ext_resource type="Texture2D" uid="uid://du5x413ptu6nj" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】转身/1.png" id="2_uyy6n"]
[ext_resource type="Texture2D" uid="uid://bdtorkjx8her2" path="res://asset/art/gif/c01_孤儿院围墙/【画画小女孩】画画/1.png" id="2_v2ujn"]
[ext_resource type="Texture2D" uid="uid://csxtfj3656v6c" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】走路/1.png" id="2_vi1r2"]
[ext_resource type="Texture2D" uid="uid://cvp42uca34x7l" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面呼吸/1.png" id="2_xhcqf"]
[ext_resource type="Texture2D" uid="uid://c3xh4fyube6t7" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-侧面呼吸/1.png" id="2_yyhn6"]
[ext_resource type="Texture2D" uid="uid://1tlm1xvnniq0" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-1】画画/2.png" id="3_3nmj5"]
[ext_resource type="Texture2D" uid="uid://byvjdjmgjwdag" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/2.png" id="3_5bq38"]
[ext_resource type="Texture2D" uid="uid://dcj8l33cwacay" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/2.png" id="3_b53vp"]
[ext_resource type="Texture2D" uid="uid://dmomrke34h21e" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/2.png" id="3_c8gk4"]
[ext_resource type="Texture2D" uid="uid://bgqqdt7obaovc" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】转身/2.png" id="3_cqqvg"]
[ext_resource type="Texture2D" uid="uid://dkxmfjjcrh15n" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/2.png" id="3_fb5fw"]
[ext_resource type="Texture2D" uid="uid://cumtftlp2b81a" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】转身/2.png" id="3_h4yrv"]
[ext_resource type="Texture2D" uid="uid://cw63xfo1n4jsb" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】走路/2.png" id="3_na40s"]
[ext_resource type="Texture2D" uid="uid://74t3hg04bwrp" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-2】画画/2.png" id="3_p6ip8"]
@ -59,38 +44,53 @@
[ext_resource type="Texture2D" uid="uid://e67jy64iaxdd" path="res://asset/art/gif/c01_孤儿院围墙/【画画小女孩】画画/2.png" id="3_v0mng"]
[ext_resource type="Texture2D" uid="uid://cw4n25m4bp6qr" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】走路/3.png" id="4_6jrvx"]
[ext_resource type="Texture2D" uid="uid://ckawg273vkwf4" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】走路/3.png" id="4_cl47v"]
[ext_resource type="Texture2D" uid="uid://bvhv757upma3y" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/3.png" id="4_fuqul"]
[ext_resource type="Texture2D" uid="uid://b6sxa2775bht0" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/3.png" id="4_ht2db"]
[ext_resource type="Texture2D" uid="uid://dwaou37m674kx" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-2】画画/3.png" id="4_kmcg6"]
[ext_resource type="Texture2D" uid="uid://b5pj34dnsfw55" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/3.png" id="4_kof4k"]
[ext_resource type="Texture2D" uid="uid://bv70m2btjanhn" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/3.png" id="4_l3aqm"]
[ext_resource type="Texture2D" uid="uid://w8gsp8q1doa4" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-1】画画/3.png" id="4_pb2wv"]
[ext_resource type="Texture2D" uid="uid://d2bhhosj71swm" path="res://asset/art/gif/c01_孤儿院围墙/【画画小女孩】画画/3.png" id="4_td1ff"]
[ext_resource type="Texture2D" uid="uid://c1m6b6a0fla0x" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-1】画画/4.png" id="5_3gppe"]
[ext_resource type="Texture2D" uid="uid://dix1078do1ruy" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】走路/4.png" id="5_fljfp"]
[ext_resource type="Texture2D" uid="uid://cvp6h26l50nok" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】走路/4.png" id="5_gdjhv"]
[ext_resource type="Texture2D" uid="uid://ogfwcyix7pte" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/4.png" id="5_kw7qo"]
[ext_resource type="Texture2D" uid="uid://bpslw76bboek4" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/4.png" id="5_l7d88"]
[ext_resource type="Texture2D" uid="uid://dc8xxkr0kanfc" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/4.png" id="5_n7kne"]
[ext_resource type="Texture2D" uid="uid://b1klwki8rtqko" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/4.png" id="5_o4tx6"]
[ext_resource type="Texture2D" uid="uid://ll3lmrsm46qu" path="res://asset/art/gif/c01_孤儿院围墙/【画画男孩-1】画画/5.png" id="6_b6u7x"]
[ext_resource type="Texture2D" uid="uid://cwvnr5kpry44k" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/5.png" id="6_bets1"]
[ext_resource type="Texture2D" uid="uid://cwnr7kfb6m3t1" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/5.png" id="6_buun0"]
[ext_resource type="Texture2D" uid="uid://unt2hpw3j5k4" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/5.png" id="6_chmbr"]
[ext_resource type="Texture2D" uid="uid://dsg47jdsyaaem" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】走路/5.png" id="6_mfo52"]
[ext_resource type="Texture2D" uid="uid://ds4f3eqrrhxgo" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】走路/5.png" id="6_skctu"]
[ext_resource type="Texture2D" uid="uid://dldhs3kweissi" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】走路/6.png" id="7_8jm5p"]
[ext_resource type="Texture2D" uid="uid://cr0lfjyilyv0h" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/6.png" id="7_e6xmt"]
[ext_resource type="Texture2D" uid="uid://8l0swi37h7jh" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/6.png" id="7_iqnta"]
[ext_resource type="Texture2D" uid="uid://ca2i3sp73td6c" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/6.png" id="7_joe58"]
[ext_resource type="Texture2D" uid="uid://s8tmd231xclj" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】走路/6.png" id="7_tvyu2"]
[ext_resource type="Texture2D" uid="uid://b7qtfebqtvuj" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/7.png" id="8_1cp4h"]
[ext_resource type="Texture2D" uid="uid://dk8wcyuwd7ono" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-3】走路/7.png" id="8_ejnhh"]
[ext_resource type="Texture2D" uid="uid://bhi4ljqhtfsn0" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】走路/7.png" id="8_l10wd"]
[ext_resource type="Texture2D" uid="uid://ch20u0ixu0dxk" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/7.png" id="8_p0u3l"]
[ext_resource type="Texture2D" uid="uid://dac2467h21n8j" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/7.png" id="8_u6p3q"]
[ext_resource type="Texture2D" uid="uid://enakmx10tyj" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-1】挠痒呼吸/8.png" id="9_hj6s2"]
[ext_resource type="Texture2D" uid="uid://dhemjx6imeo6e" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/8.png" id="9_q3o8p"]
[ext_resource type="Texture2D" uid="uid://b7dvlp7s1ncvo" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/0.png" id="46_p2m02"]
[ext_resource type="Texture2D" uid="uid://dpqrcyjh7xy7o" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/1.png" id="47_dom4o"]
[ext_resource type="Texture2D" uid="uid://byvjdjmgjwdag" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/2.png" id="48_1rjcw"]
[ext_resource type="Texture2D" uid="uid://bv70m2btjanhn" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/3.png" id="49_sqbi1"]
[ext_resource type="Texture2D" uid="uid://dc8xxkr0kanfc" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/4.png" id="50_pf370"]
[ext_resource type="Texture2D" uid="uid://unt2hpw3j5k4" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/5.png" id="51_w5kkt"]
[ext_resource type="Texture2D" uid="uid://cr0lfjyilyv0h" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/6.png" id="52_u5lmn"]
[ext_resource type="Texture2D" uid="uid://ch20u0ixu0dxk" path="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/7.png" id="53_neo6x"]
[ext_resource type="Texture2D" uid="uid://duwwu5rnhutvk" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】侧面呼吸/0.png" id="72_2ac2n"]
[ext_resource type="Texture2D" uid="uid://c3xh4fyube6t7" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】侧面呼吸/1.png" id="73_gu752"]
[ext_resource type="Texture2D" uid="uid://bjpipjewo7odc" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】呼吸/0.png" id="74_kmntn"]
[ext_resource type="Texture2D" uid="uid://by3cduy6cnll5" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】呼吸/1.png" id="75_aqe07"]
[ext_resource type="Texture2D" uid="uid://ckch7g7cw2bdh" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面呼吸/0.png" id="76_ksjfk"]
[ext_resource type="Texture2D" uid="uid://cvp42uca34x7l" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面呼吸/1.png" id="77_pac87"]
[ext_resource type="Texture2D" uid="uid://c0kjvl5d7aex3" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/0.png" id="78_wny6u"]
[ext_resource type="Texture2D" uid="uid://bs4mc2aspt0jx" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/1.png" id="79_1rofp"]
[ext_resource type="Texture2D" uid="uid://dcj8l33cwacay" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/2.png" id="80_r66qh"]
[ext_resource type="Texture2D" uid="uid://b6sxa2775bht0" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/3.png" id="81_3sh20"]
[ext_resource type="Texture2D" uid="uid://bpslw76bboek4" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/4.png" id="82_3ch1m"]
[ext_resource type="Texture2D" uid="uid://bl62sfnedwjy8" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/0.png" id="83_qm1pv"]
[ext_resource type="Texture2D" uid="uid://bna3mk142wj61" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/1.png" id="84_hodev"]
[ext_resource type="Texture2D" uid="uid://dkxmfjjcrh15n" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/2.png" id="85_br80e"]
[ext_resource type="Texture2D" uid="uid://bvhv757upma3y" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/3.png" id="86_84780"]
[ext_resource type="Texture2D" uid="uid://b1klwki8rtqko" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/4.png" id="87_wb7lj"]
[ext_resource type="Texture2D" uid="uid://cwnr7kfb6m3t1" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/5.png" id="88_iasis"]
[ext_resource type="Texture2D" uid="uid://8l0swi37h7jh" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/6.png" id="89_kkuwn"]
[ext_resource type="Texture2D" uid="uid://b7qtfebqtvuj" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/7.png" id="90_vjtvq"]
[ext_resource type="Texture2D" uid="uid://dhemjx6imeo6e" path="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/8.png" id="91_0iojk"]
[resource]
animations = [{
@ -112,7 +112,7 @@ animations = [{
"duration": 30.0,
"texture": ExtResource("2_gc6kb")
}],
"loop": false,
"loop": true,
"name": &"【画画小女孩】回头",
"speed": 30.0
}, {
@ -129,7 +129,7 @@ animations = [{
"duration": 12.0,
"texture": ExtResource("4_td1ff")
}],
"loop": false,
"loop": true,
"name": &"【画画小女孩】画画",
"speed": 30.0
}, {
@ -268,35 +268,6 @@ animations = [{
"speed": 30.0
}, {
"frames": [{
"duration": 4.5,
"texture": ExtResource("1_bpqhs")
}, {
"duration": 4.5,
"texture": ExtResource("2_7vqsn")
}, {
"duration": 4.5,
"texture": ExtResource("3_5bq38")
}, {
"duration": 4.5,
"texture": ExtResource("4_l3aqm")
}, {
"duration": 4.5,
"texture": ExtResource("5_n7kne")
}, {
"duration": 4.5,
"texture": ExtResource("6_chmbr")
}, {
"duration": 4.5,
"texture": ExtResource("7_e6xmt")
}, {
"duration": 4.5,
"texture": ExtResource("8_p0u3l")
}],
"loop": true,
"name": &"【站立小孩-2】-走路",
"speed": 30.0
}, {
"frames": [{
"duration": 30.0,
"texture": ExtResource("1_s4rfr")
}, {
@ -319,6 +290,35 @@ animations = [{
"speed": 30.0
}, {
"frames": [{
"duration": 4.5,
"texture": ExtResource("46_p2m02")
}, {
"duration": 4.5,
"texture": ExtResource("47_dom4o")
}, {
"duration": 4.5,
"texture": ExtResource("48_1rjcw")
}, {
"duration": 4.5,
"texture": ExtResource("49_sqbi1")
}, {
"duration": 4.5,
"texture": ExtResource("50_pf370")
}, {
"duration": 4.5,
"texture": ExtResource("51_w5kkt")
}, {
"duration": 4.5,
"texture": ExtResource("52_u5lmn")
}, {
"duration": 4.5,
"texture": ExtResource("53_neo6x")
}],
"loop": true,
"name": &"【站立小孩-2】走路",
"speed": 30.0
}, {
"frames": [{
"duration": 30.0,
"texture": ExtResource("1_lgncd")
}, {
@ -399,86 +399,86 @@ animations = [{
}, {
"frames": [{
"duration": 30.0,
"texture": ExtResource("1_77bb6")
"texture": ExtResource("72_2ac2n")
}, {
"duration": 30.0,
"texture": ExtResource("2_yyhn6")
"texture": ExtResource("73_gu752")
}],
"loop": true,
"name": &"【胖小孩背着残疾小孩】-侧面呼吸",
"name": &"【胖小孩背着残疾小孩】侧面呼吸",
"speed": 30.0
}, {
"frames": [{
"duration": 30.0,
"texture": ExtResource("1_emhxq")
"texture": ExtResource("74_kmntn")
}, {
"duration": 30.0,
"texture": ExtResource("2_ormam")
"texture": ExtResource("75_aqe07")
}],
"loop": true,
"name": &"【胖小孩背着残疾小孩】-呼吸",
"name": &"【胖小孩背着残疾小孩】呼吸",
"speed": 30.0
}, {
"frames": [{
"duration": 30.0,
"texture": ExtResource("1_mo286")
"texture": ExtResource("76_ksjfk")
}, {
"duration": 30.0,
"texture": ExtResource("2_xhcqf")
"texture": ExtResource("77_pac87")
}],
"loop": true,
"name": &"【胖小孩背着残疾小孩】-正面呼吸",
"name": &"【胖小孩背着残疾小孩】正面呼吸",
"speed": 30.0
}, {
"frames": [{
"duration": 30.0,
"texture": ExtResource("1_t07xp")
"texture": ExtResource("78_wny6u")
}, {
"duration": 30.0,
"texture": ExtResource("2_lbw4p")
"texture": ExtResource("79_1rofp")
}, {
"duration": 30.0,
"texture": ExtResource("3_b53vp")
"texture": ExtResource("80_r66qh")
}, {
"duration": 6.0,
"texture": ExtResource("4_ht2db")
"texture": ExtResource("81_3sh20")
}, {
"duration": 30.0,
"texture": ExtResource("5_l7d88")
"texture": ExtResource("82_3ch1m")
}],
"loop": true,
"name": &"【胖小孩背着残疾小孩】-正面抖肩",
"name": &"【胖小孩背着残疾小孩】正面抖肩",
"speed": 30.0
}, {
"frames": [{
"duration": 15.0,
"texture": ExtResource("1_4vplq")
"texture": ExtResource("83_qm1pv")
}, {
"duration": 12.0,
"texture": ExtResource("2_sepw4")
"texture": ExtResource("84_hodev")
}, {
"duration": 12.0,
"texture": ExtResource("3_fb5fw")
"texture": ExtResource("85_br80e")
}, {
"duration": 12.0,
"texture": ExtResource("4_fuqul")
"texture": ExtResource("86_84780")
}, {
"duration": 12.0,
"texture": ExtResource("5_o4tx6")
"texture": ExtResource("87_wb7lj")
}, {
"duration": 12.0,
"texture": ExtResource("6_buun0")
"texture": ExtResource("88_iasis")
}, {
"duration": 12.0,
"texture": ExtResource("7_iqnta")
"texture": ExtResource("89_kkuwn")
}, {
"duration": 12.0,
"texture": ExtResource("8_1cp4h")
"texture": ExtResource("90_vjtvq")
}, {
"duration": 30.0,
"texture": ExtResource("9_q3o8p")
"texture": ExtResource("91_0iojk")
}],
"loop": true,
"name": &"【胖小孩背着残疾小孩】-画画",
"name": &"【胖小孩背着残疾小孩】画画",
"speed": 30.0
}]

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -0,0 +1,14 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://oyox3arodtif"
path="res://.godot/imported/【站立小孩-2】走路.gif-5c624d41fec4f03a0a6f210a5be40598.tres"
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路.gif"
dest_files=["res://.godot/imported/【站立小孩-2】走路.gif-5c624d41fec4f03a0a6f210a5be40598.tres"]
[params]

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b7dvlp7s1ncvo"
path="res://.godot/imported/0.png-38088b526399808fdddeb0beef20d597.ctex"
path="res://.godot/imported/0.png-4680a21677f2c33677cd944b97cf0249.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/0.png"
dest_files=["res://.godot/imported/0.png-38088b526399808fdddeb0beef20d597.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/0.png"
dest_files=["res://.godot/imported/0.png-4680a21677f2c33677cd944b97cf0249.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dpqrcyjh7xy7o"
path="res://.godot/imported/1.png-03d962a3ba16d182680792cdf589f9e7.ctex"
path="res://.godot/imported/1.png-69418e4961b2db1756e3cf73dce1c979.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/1.png"
dest_files=["res://.godot/imported/1.png-03d962a3ba16d182680792cdf589f9e7.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/1.png"
dest_files=["res://.godot/imported/1.png-69418e4961b2db1756e3cf73dce1c979.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://byvjdjmgjwdag"
path="res://.godot/imported/2.png-5c274dc8bb0874754505c26daf6ecdf0.ctex"
path="res://.godot/imported/2.png-fcc880aaedb5aaa3345d9b7171b3ed11.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/2.png"
dest_files=["res://.godot/imported/2.png-5c274dc8bb0874754505c26daf6ecdf0.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/2.png"
dest_files=["res://.godot/imported/2.png-fcc880aaedb5aaa3345d9b7171b3ed11.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bv70m2btjanhn"
path="res://.godot/imported/3.png-ecd1be9bc8b17d633e6d48017b0cc119.ctex"
path="res://.godot/imported/3.png-3ce34814835d7ed52b76cf5118776487.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/3.png"
dest_files=["res://.godot/imported/3.png-ecd1be9bc8b17d633e6d48017b0cc119.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/3.png"
dest_files=["res://.godot/imported/3.png-3ce34814835d7ed52b76cf5118776487.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dc8xxkr0kanfc"
path="res://.godot/imported/4.png-0e81f18376fb91753ac2b4d4b21f5913.ctex"
path="res://.godot/imported/4.png-b58d55c543e7288ef796f607fbcd77b7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/4.png"
dest_files=["res://.godot/imported/4.png-0e81f18376fb91753ac2b4d4b21f5913.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/4.png"
dest_files=["res://.godot/imported/4.png-b58d55c543e7288ef796f607fbcd77b7.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://unt2hpw3j5k4"
path="res://.godot/imported/5.png-d0d0c79f0f7cb249e24ebe2b4704a100.ctex"
path="res://.godot/imported/5.png-d230f05926b126c0f79b4517ae30bd13.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/5.png"
dest_files=["res://.godot/imported/5.png-d0d0c79f0f7cb249e24ebe2b4704a100.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/5.png"
dest_files=["res://.godot/imported/5.png-d230f05926b126c0f79b4517ae30bd13.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cr0lfjyilyv0h"
path="res://.godot/imported/6.png-089cd772157d2982e4a429b4a04e6632.ctex"
path="res://.godot/imported/6.png-c8132254fa5cb4d6f91b3457db24c357.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/6.png"
dest_files=["res://.godot/imported/6.png-089cd772157d2982e4a429b4a04e6632.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/6.png"
dest_files=["res://.godot/imported/6.png-c8132254fa5cb4d6f91b3457db24c357.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ch20u0ixu0dxk"
path="res://.godot/imported/7.png-78f9a5e3b638337179ee6b025a08d8b4.ctex"
path="res://.godot/imported/7.png-313259ffc87ebda15174516d2e250fa2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】-走路/7.png"
dest_files=["res://.godot/imported/7.png-78f9a5e3b638337179ee6b025a08d8b4.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【站立小孩-2】走路/7.png"
dest_files=["res://.godot/imported/7.png-313259ffc87ebda15174516d2e250fa2.ctex"]
[params]

View File

@ -0,0 +1,14 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://cacxgcspw5x74"
path="res://.godot/imported/【胖小孩背着残疾小孩】侧面呼吸.gif-e5d671a64dde85a09a78244deb0048b0.tres"
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】侧面呼吸.gif"
dest_files=["res://.godot/imported/【胖小孩背着残疾小孩】侧面呼吸.gif-e5d671a64dde85a09a78244deb0048b0.tres"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://duwwu5rnhutvk"
path="res://.godot/imported/0.png-b1302796a9ecf17d0fc4c4a7c9be2088.ctex"
path="res://.godot/imported/0.png-0fed3e2cbf9e89a83b8565eba3af4f30.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-侧面呼吸/0.png"
dest_files=["res://.godot/imported/0.png-b1302796a9ecf17d0fc4c4a7c9be2088.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】侧面呼吸/0.png"
dest_files=["res://.godot/imported/0.png-0fed3e2cbf9e89a83b8565eba3af4f30.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c3xh4fyube6t7"
path="res://.godot/imported/1.png-efaeecc32a7aba6b835aa9e20065ab81.ctex"
path="res://.godot/imported/1.png-a3f198f7079dfe449c649b5f8a0c7865.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-侧面呼吸/1.png"
dest_files=["res://.godot/imported/1.png-efaeecc32a7aba6b835aa9e20065ab81.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】侧面呼吸/1.png"
dest_files=["res://.godot/imported/1.png-a3f198f7079dfe449c649b5f8a0c7865.ctex"]
[params]

View File

@ -0,0 +1,14 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://c2vqbykjhclse"
path="res://.godot/imported/【胖小孩背着残疾小孩】呼吸.gif-ad9e5f3b713e78196eba8574d070ea97.tres"
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】呼吸.gif"
dest_files=["res://.godot/imported/【胖小孩背着残疾小孩】呼吸.gif-ad9e5f3b713e78196eba8574d070ea97.tres"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bjpipjewo7odc"
path="res://.godot/imported/0.png-573c0701b53feef8c7b90aaf124bfbe1.ctex"
path="res://.godot/imported/0.png-8d93370bff20763efb83c61f9a2c2e67.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-呼吸/0.png"
dest_files=["res://.godot/imported/0.png-573c0701b53feef8c7b90aaf124bfbe1.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】呼吸/0.png"
dest_files=["res://.godot/imported/0.png-8d93370bff20763efb83c61f9a2c2e67.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://by3cduy6cnll5"
path="res://.godot/imported/1.png-1fbe28f6d585ed57b193401186f834b7.ctex"
path="res://.godot/imported/1.png-e2adc841a7b32c99a14595ed885d5ed6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-呼吸/1.png"
dest_files=["res://.godot/imported/1.png-1fbe28f6d585ed57b193401186f834b7.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】呼吸/1.png"
dest_files=["res://.godot/imported/1.png-e2adc841a7b32c99a14595ed885d5ed6.ctex"]
[params]

View File

@ -0,0 +1,14 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://rcuhe666qpr"
path="res://.godot/imported/【胖小孩背着残疾小孩】正面呼吸.gif-52dddd274c9686cd73856151ec11270f.tres"
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面呼吸.gif"
dest_files=["res://.godot/imported/【胖小孩背着残疾小孩】正面呼吸.gif-52dddd274c9686cd73856151ec11270f.tres"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ckch7g7cw2bdh"
path="res://.godot/imported/0.png-2a06aaa70b1d72d16533b77ebddac371.ctex"
path="res://.godot/imported/0.png-3a94fda88a92115cbadc6a006717c821.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面呼吸/0.png"
dest_files=["res://.godot/imported/0.png-2a06aaa70b1d72d16533b77ebddac371.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面呼吸/0.png"
dest_files=["res://.godot/imported/0.png-3a94fda88a92115cbadc6a006717c821.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cvp42uca34x7l"
path="res://.godot/imported/1.png-f1511a8060456b63829cd5285d968e5b.ctex"
path="res://.godot/imported/1.png-8c0af262870dae235d0a11e030958a55.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面呼吸/1.png"
dest_files=["res://.godot/imported/1.png-f1511a8060456b63829cd5285d968e5b.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面呼吸/1.png"
dest_files=["res://.godot/imported/1.png-8c0af262870dae235d0a11e030958a55.ctex"]
[params]

View File

@ -0,0 +1,14 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://hd0wov2cmbv"
path="res://.godot/imported/【胖小孩背着残疾小孩】正面抖肩.gif-6e49e8b9b2afff0634442fabd9a8bd7b.tres"
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩.gif"
dest_files=["res://.godot/imported/【胖小孩背着残疾小孩】正面抖肩.gif-6e49e8b9b2afff0634442fabd9a8bd7b.tres"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c0kjvl5d7aex3"
path="res://.godot/imported/0.png-4045d1daf4832f9fb015b7f24d4fe270.ctex"
path="res://.godot/imported/0.png-7b2fcabdeb1d828fc74d3666b2700a19.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/0.png"
dest_files=["res://.godot/imported/0.png-4045d1daf4832f9fb015b7f24d4fe270.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/0.png"
dest_files=["res://.godot/imported/0.png-7b2fcabdeb1d828fc74d3666b2700a19.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bs4mc2aspt0jx"
path="res://.godot/imported/1.png-02606a48c1959a656a3361d0635eef43.ctex"
path="res://.godot/imported/1.png-66205b8d3ec345ad5171f33301fa8f7e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/1.png"
dest_files=["res://.godot/imported/1.png-02606a48c1959a656a3361d0635eef43.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/1.png"
dest_files=["res://.godot/imported/1.png-66205b8d3ec345ad5171f33301fa8f7e.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dcj8l33cwacay"
path="res://.godot/imported/2.png-b1f68822fd42a67bf30bfc4bcf00227c.ctex"
path="res://.godot/imported/2.png-ffcfbf898f89fe3d0628d0668719c2eb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/2.png"
dest_files=["res://.godot/imported/2.png-b1f68822fd42a67bf30bfc4bcf00227c.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/2.png"
dest_files=["res://.godot/imported/2.png-ffcfbf898f89fe3d0628d0668719c2eb.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b6sxa2775bht0"
path="res://.godot/imported/3.png-90664dbc809fb7f5badd20608aff35c1.ctex"
path="res://.godot/imported/3.png-c7658df68c8b65d7a1834dffcf384009.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/3.png"
dest_files=["res://.godot/imported/3.png-90664dbc809fb7f5badd20608aff35c1.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/3.png"
dest_files=["res://.godot/imported/3.png-c7658df68c8b65d7a1834dffcf384009.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bpslw76bboek4"
path="res://.godot/imported/4.png-c48845dd8b95025cea8e64cb6750bc8e.ctex"
path="res://.godot/imported/4.png-0742b3ee354873e83c2cf8f020b184e7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-正面抖肩/4.png"
dest_files=["res://.godot/imported/4.png-c48845dd8b95025cea8e64cb6750bc8e.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】正面抖肩/4.png"
dest_files=["res://.godot/imported/4.png-0742b3ee354873e83c2cf8f020b184e7.ctex"]
[params]

View File

@ -0,0 +1,14 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://bl3iv85m3i1sb"
path="res://.godot/imported/【胖小孩背着残疾小孩】画画.gif-defc0cd255f9d1d9f8a7e6d1d898c309.tres"
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画.gif"
dest_files=["res://.godot/imported/【胖小孩背着残疾小孩】画画.gif-defc0cd255f9d1d9f8a7e6d1d898c309.tres"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bl62sfnedwjy8"
path="res://.godot/imported/0.png-5ccd247d64662297900f208f1545eb46.ctex"
path="res://.godot/imported/0.png-68534cca3b9fcd832e63b90f2538dfdb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/0.png"
dest_files=["res://.godot/imported/0.png-5ccd247d64662297900f208f1545eb46.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/0.png"
dest_files=["res://.godot/imported/0.png-68534cca3b9fcd832e63b90f2538dfdb.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bna3mk142wj61"
path="res://.godot/imported/1.png-a641c65cc90f465516b6c977c89e85d4.ctex"
path="res://.godot/imported/1.png-01f9b2c8af8e0ff29434a93ca280ae7b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/1.png"
dest_files=["res://.godot/imported/1.png-a641c65cc90f465516b6c977c89e85d4.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/1.png"
dest_files=["res://.godot/imported/1.png-01f9b2c8af8e0ff29434a93ca280ae7b.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dkxmfjjcrh15n"
path="res://.godot/imported/2.png-5fb0e86f70616365a8531f44006a2a31.ctex"
path="res://.godot/imported/2.png-3ad26687bdef409423a7229e1d45113b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/2.png"
dest_files=["res://.godot/imported/2.png-5fb0e86f70616365a8531f44006a2a31.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/2.png"
dest_files=["res://.godot/imported/2.png-3ad26687bdef409423a7229e1d45113b.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bvhv757upma3y"
path="res://.godot/imported/3.png-9f1fcb92009e3a6c7618421e75c95ca5.ctex"
path="res://.godot/imported/3.png-53cb8c80f1a924816f3c4384bfcbe998.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/3.png"
dest_files=["res://.godot/imported/3.png-9f1fcb92009e3a6c7618421e75c95ca5.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/3.png"
dest_files=["res://.godot/imported/3.png-53cb8c80f1a924816f3c4384bfcbe998.ctex"]
[params]

View File

@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b7qtfebqtvuj"
path="res://.godot/imported/7.png-204e227c9b6cd3c9286a51b1de931b0c.ctex"
uid="uid://b1klwki8rtqko"
path="res://.godot/imported/4.png-93443f79e4b3339d3a5ad1a07ea6bb58.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/7.png"
dest_files=["res://.godot/imported/7.png-204e227c9b6cd3c9286a51b1de931b0c.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/4.png"
dest_files=["res://.godot/imported/4.png-93443f79e4b3339d3a5ad1a07ea6bb58.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cwnr7kfb6m3t1"
path="res://.godot/imported/5.png-f88554922a775d87114d5118c6824049.ctex"
path="res://.godot/imported/5.png-f58a17dd6bca9d1b294f43f403c544ec.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/5.png"
dest_files=["res://.godot/imported/5.png-f88554922a775d87114d5118c6824049.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/5.png"
dest_files=["res://.godot/imported/5.png-f58a17dd6bca9d1b294f43f403c544ec.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://8l0swi37h7jh"
path="res://.godot/imported/6.png-d744d4b86367b81e60317a026846fce0.ctex"
path="res://.godot/imported/6.png-f760246de00768cc886919bdad705865.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/6.png"
dest_files=["res://.godot/imported/6.png-d744d4b86367b81e60317a026846fce0.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/6.png"
dest_files=["res://.godot/imported/6.png-f760246de00768cc886919bdad705865.ctex"]
[params]

View File

@ -2,16 +2,16 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://b1klwki8rtqko"
path="res://.godot/imported/4.png-eb31b420f2dee818c3045afbb245c8d6.ctex"
uid="uid://b7qtfebqtvuj"
path="res://.godot/imported/7.png-bddec3f758ad976129f735d01e5eb7f3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/4.png"
dest_files=["res://.godot/imported/4.png-eb31b420f2dee818c3045afbb245c8d6.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/7.png"
dest_files=["res://.godot/imported/7.png-bddec3f758ad976129f735d01e5eb7f3.ctex"]
[params]

View File

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dhemjx6imeo6e"
path="res://.godot/imported/8.png-eb50fcdf71689fc6f1de5636486b86ed.ctex"
path="res://.godot/imported/8.png-74733dff9ec2570cdb46c9f78b7621c2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】-画画/8.png"
dest_files=["res://.godot/imported/8.png-eb50fcdf71689fc6f1de5636486b86ed.ctex"]
source_file="res://asset/art/gif/c01_孤儿院围墙/【胖小孩背着残疾小孩】画画/8.png"
dest_files=["res://.godot/imported/8.png-74733dff9ec2570cdb46c9f78b7621c2.ctex"]
[params]

View File

@ -223,30 +223,30 @@ animations = [{
"duration": 3.0,
"texture": ExtResource("37_u6xcr")
}],
"loop": false,
"loop": true,
"name": &"男孩跑动停球",
"speed": 30.0
}, {
"frames": [{
"duration": 6.0,
"duration": 10.5,
"texture": ExtResource("38_vmpr4")
}, {
"duration": 6.0,
"duration": 10.5,
"texture": ExtResource("39_bkomk")
}, {
"duration": 6.0,
"duration": 10.5,
"texture": ExtResource("40_y2al4")
}, {
"duration": 6.0,
"duration": 10.5,
"texture": ExtResource("41_iuide")
}, {
"duration": 6.0,
"duration": 10.5,
"texture": ExtResource("42_7yjpa")
}, {
"duration": 6.0,
"duration": 10.5,
"texture": ExtResource("43_ctekv")
}, {
"duration": 6.0,
"duration": 10.5,
"texture": ExtResource("44_f2e71")
}],
"loop": true,
@ -274,16 +274,16 @@ animations = [{
"duration": 10.5,
"texture": ExtResource("49_5qald")
}, {
"duration": 50.0,
"duration": 30.0,
"texture": ExtResource("50_ndrgc")
}, {
"duration": 10.5,
"texture": ExtResource("51_rtpby")
}, {
"duration": 10.0,
"duration": 10.5,
"texture": ExtResource("52_yncgy")
}],
"loop": false,
"loop": true,
"name": &"红衣姑娘抬头",
"speed": 30.0
}, {
@ -311,13 +311,13 @@ animations = [{
"speed": 30.0
}, {
"frames": [{
"duration": 6.0,
"duration": 12.0,
"texture": ExtResource("59_tgtdw")
}, {
"duration": 6.0,
"duration": 12.0,
"texture": ExtResource("60_kgk0o")
}, {
"duration": 6.0,
"duration": 12.0,
"texture": ExtResource("61_g7a6o")
}],
"loop": true,
@ -334,7 +334,7 @@ animations = [{
"duration": 6.0,
"texture": ExtResource("64_6j8gg")
}, {
"duration": 30.0,
"duration": 6.0,
"texture": ExtResource("65_5sckl")
}, {
"duration": 6.0,
@ -346,7 +346,7 @@ animations = [{
"duration": 12.0,
"texture": ExtResource("68_548o5")
}],
"loop": false,
"loop": true,
"name": &"院长抬头",
"speed": 30.0
}, {
@ -366,7 +366,7 @@ animations = [{
"duration": 6.0,
"texture": ExtResource("73_8tjai")
}],
"loop": false,
"loop": true,
"name": &"院长翻书",
"speed": 30.0
}]

View File

@ -2,4 +2,4 @@ extends Resource
class_name AudioStreamCollection
@export var audios := [] as Array[AudioStream]
@export var audios : Array[AudioStream] = []

View File

@ -2,16 +2,18 @@ extends AudioStreamPlayer
class_name RandomAudioStreamPlayer
@export var audio_collections := [] as Array[AudioStreamCollection]
@export var audio_collections: Array[AudioStreamCollection] = []
func _init() -> void:
bus = "game_sfx"
func play_random():
if audio_collections == null:
push_warning("empty audio_collections")
return
var audio_collection:=audio_collections.pick_random() as AudioStreamCollection
var audio_collection := audio_collections.pick_random() as AudioStreamCollection
stream = audio_collection.audios.pick_random()
if stream == null:
push_error("empty stream in audio_collection", audio_collection)

View File

@ -11,7 +11,7 @@ class_name EntityConfig extends Resource
@export var entity_name: String = ""
@export var entity_title: String = ""
# @export var entity_notes := [] as Array[String]
# @export var entity_notes : Array[String] = []
# @export var hud_texture: Texture2D
# @export var pickable := false
@export var inspection_texture: Texture2D

View File

@ -67,7 +67,7 @@ window/stretch/mode="canvas_items"
[editor_plugins]
enabled=PackedStringArray("res://addons/debug_menu/plugin.cfg", "res://addons/dialogue_manager/plugin.cfg", "res://addons/gif-importer/plugin.cfg", "res://addons/project-statistics/plugin.cfg")
enabled=PackedStringArray("res://addons/debug_menu/plugin.cfg", "res://addons/dialogue_manager/plugin.cfg", "res://addons/gif-importer/plugin.cfg", "res://addons/project-statistics/plugin.cfg", "res://addons/property-inspector/plugin.cfg")
[gui]

BIN
readme_image/image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://x0vsq06qilpe"
path="res://.godot/imported/image.png-0227d840b12d08f54c8037d1b460252b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://readme_image/image.png"
dest_files=["res://.godot/imported/image.png-0227d840b12d08f54c8037d1b460252b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -1,84 +0,0 @@
@tool
extends AnimatedSprite2D
@export var autostart := true
@export var state_configs := [] as Array[StateActionConfigResource]
var auto_checkout_dict = {
# intro -> {state_config instance}
}
func _ready() -> void:
_load_config()
if Engine.is_editor_hint():
return
if autostart and animation:
# 制造一点错差
frame = randi() % sprite_frames.get_frame_count(animation)
play()
animation_finished.connect(_on_animation_finished)
func _load_config():
for i in range(state_configs.size()):
var state_config = state_configs[i]
if sprite_frames and sprite_frames.has_animation(state_config.animation_intro):
# intro 的 animation 关闭循环
sprite_frames.set_animation_loop(state_config.animation_intro, false)
auto_checkout_dict[state_config.animation_intro] = {
"animation_next": state_config.animation_next,
"animation_wait_time": state_config.animation_wait_time,
"intro_loop": max(1, state_config.intro_loop)
}
func _on_animation_finished() -> void:
if auto_checkout_dict.has(animation):
auto_checkout_dict[animation].intro_loop -= 1
if auto_checkout_dict[animation].intro_loop <= 0:
var wait_time = auto_checkout_dict[animation].animation_wait_time
var next = auto_checkout_dict[animation].animation_next
if wait_time > 0:
pause()
get_tree().create_timer(wait_time).timeout.connect(play.bind(next))
else:
play(next)
# const gif_root_dir = "res://asset/art/gif/"
# var gif_dir:
# set(val):
# gif_dir = val
# # 只在编辑器模式下加载配置
# if Engine.is_editor_hint() and gif_dir:
# sprite_frames = load(gif_root_dir + gif_dir + "/frames.tres")
# func _get(property: StringName) -> Variant:
# if property == "gif_dir":
# return gif_dir
# return null
# func _set(property: StringName, value: Variant) -> bool:
# if property == "gif_dir":
# gif_dir = value
# return true
# return false
# func _get_property_list() -> Array[Dictionary]:
# # 只在编辑器模式下加载配置
# var hint_str = ""
# if Engine.is_editor_hint():
# var dir_access = DirAccess.open(gif_root_dir) as DirAccess
# var dirs = dir_access.get_directories()
# hint_str = ",".join(dirs)
# return [
# {
# "name": "gif_dir",
# "type": TYPE_STRING,
# "hint": PROPERTY_HINT_ENUM_SUGGESTION,
# "hint_string": hint_str
# }
# ]

View File

@ -1,9 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://b50n0hvs4yh75"]
[ext_resource type="Script" path="res://scene/entity/general/autoplay_animated_sprite.gd" id="1_21eda"]
[ext_resource type="Script" path="res://scene/entity/general/state_action_res.gd" id="2_pvtjh"]
[node name="AutoplayAnimatedSprite" type="AnimatedSprite2D"]
script = ExtResource("1_21eda")
state_configs = Array[ExtResource("2_pvtjh")]([])
gif_dir = ""

View File

@ -1,15 +1,11 @@
@tool
class_name Sfx extends AudioStreamPlayer
# @export var volume_db := 0.0
@export_enum("child", "game/八音盒", "game/旋转锁", "ghost", "lvping", "ui", "c01", "c02") var dir := "ui":
set(value):
dir = value
_update_files()
#@export var file: String = "":
#set(val):
#if val and current_files.has(val):
#file = val
var sfx: AudioStream
var file: String
@ -18,15 +14,17 @@ var current_files := PackedStringArray()
func _ready() -> void:
if Engine.is_editor_hint():
_update_files()
_reload_sfx()
bus = &"game_sfx"
_update_files()
_reload_sfx()
func _reload_sfx():
if file and dir:
# print("reload sfx", sfx_root_path + dir + "/" + file)
# 仅在编辑器模式下加载音频 stream
if not Engine.is_editor_hint():
return
var path = sfx_root_path + dir + "/" + file
if file and dir and FileAccess.file_exists(path):
sfx = load(sfx_root_path + dir + "/" + file) as AudioStream
else:
sfx = null
@ -35,17 +33,12 @@ func _reload_sfx():
func _update_files():
current_files.clear()
if not dir:
if not dir or not Engine.is_editor_hint():
return
var dir_access := DirAccess.open(sfx_root_path + dir) as DirAccess
for f in dir_access.get_files():
if f.ends_with(".wav") or f.ends_with(".ogg") or f.ends_with(".mp3"):
current_files.push_back(f)
#for d in dir_access.get_directories():
#var sub_dir_access := DirAccess.open(sfx_root_path + dir + "/" + d) as DirAccess
#for f in sub_dir_access.get_files():
#if f.ends_with(".wav") or f.ends_with(".ogg") or f.ends_with(".mp3"):
#current_files.push_back(d + "/" + f)
if current_files.is_empty():
file = ""
elif not file or not current_files.has(file):
@ -54,17 +47,6 @@ func _update_files():
notify_property_list_changed()
#func _property_can_revert(property: StringName) -> bool:
#if property == &"file":
#return true
#return false
#
#func _property_get_revert(property: StringName) -> Variant:
#if property == &"file":
#return ""
#return null
func _get_property_list():
return [
{
@ -91,12 +73,7 @@ func _set(property: StringName, value: Variant) -> bool:
return false
# func play() -> void:
# if sfx:
# AudioManager.play_sfx(sfx, volume_db)
# queue free 导致 sfx 无法播放,使用全局声源
func global_play() -> void:
if sfx:
AudioManager.play_sfx(sfx)
if stream:
AudioManager.play_sfx(stream)

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=3 format=3 uid="uid://c85t6stvytvjn"]
[ext_resource type="Script" path="res://scene/entity/ux/sfx.gd" id="1_ng32y"]
[ext_resource type="Script" path="res://scene/entity/general/sfx.gd" id="1_ng32y"]
[ext_resource type="AudioStream" uid="uid://cvttds81trcoc" path="res://asset/audio/sfx/ui/click.wav" id="1_xj6dy"]
[node name="Sfx" type="AudioStreamPlayer"]

View File

@ -0,0 +1,10 @@
[gd_scene load_steps=3 format=3 uid="uid://cyobva6ppmapr"]
[ext_resource type="Script" path="res://scene/entity/general/sfx_2d.gd" id="1_k1qpr"]
[ext_resource type="AudioStream" uid="uid://cvttds81trcoc" path="res://asset/audio/sfx/ui/click.wav" id="1_k48eu"]
[node name="Sfx2d" type="AudioStreamPlayer2D"]
stream = ExtResource("1_k48eu")
bus = &"game_sfx"
script = ExtResource("1_k1qpr")
file = "click.wav"

View File

@ -0,0 +1,78 @@
@tool
class_name Sfx2D extends AudioStreamPlayer2D
const sfx_root_path = "res://asset/audio/sfx/"
@export_enum("child", "ghost", "lvping", "ui", "c01", "c02") var dir := "ui":
set(value):
dir = value
_update_files()
var sfx: AudioStream
var file: String
var current_files := PackedStringArray()
func _ready() -> void:
bus = &"game_sfx"
_update_files()
_reload_sfx()
func _reload_sfx():
# 仅在编辑器模式下加载音频 stream
if not Engine.is_editor_hint():
return
var path = sfx_root_path + dir + "/" + file
if file and dir and FileAccess.file_exists(path):
sfx = load(sfx_root_path + dir + "/" + file) as AudioStream
else:
sfx = null
stream = sfx
func _update_files():
current_files.clear()
if not dir or not Engine.is_editor_hint():
return
var dir_access := DirAccess.open(sfx_root_path + dir) as DirAccess
for f in dir_access.get_files():
if f.ends_with(".wav") or f.ends_with(".ogg") or f.ends_with(".mp3"):
current_files.push_back(f)
if current_files.is_empty():
file = ""
elif not file or not current_files.has(file):
file = current_files[0]
_reload_sfx()
notify_property_list_changed()
func _get_property_list():
return [
{
"name": &"file",
"type": TYPE_STRING,
"hint": PROPERTY_HINT_ENUM_SUGGESTION,
"hint_string": ",".join(current_files),
}
]
func _get(property: StringName) -> Variant:
if property == &"file":
return file
return null
func _set(property: StringName, value: Variant) -> bool:
if property == &"file":
file = value
_reload_sfx()
# notify_property_list_changed()
return true
return false
# queue free 导致 sfx 无法播放,使用全局声源
func global_play() -> void:
if stream:
AudioManager.play_sfx(stream)

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=6 format=3 uid="uid://bj4ufua0b0k34"]
[ext_resource type="Script" path="res://scene/entity/hd_entity.gd" id="1_fp2a8"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/ux/sfx.tscn" id="2_jmpkt"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="2_jmpkt"]
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="3_jupnr"]
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="3_oxpta"]

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=10 format=3 uid="uid://cw3q5pvciumil"]
[ext_resource type="Script" path="res://scene/entity/interactable.gd" id="1_6nrd3"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/ux/sfx.tscn" id="2_bvj74"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="2_bvj74"]
[ext_resource type="Texture2D" uid="uid://b343nvvbtpglb" path="res://asset/art/ui/互动提示符/ui 像素版_纯白.png" id="2_tvf5d"]
[ext_resource type="AudioStream" uid="uid://ccng5y2fip6mc" path="res://asset/audio/sfx/ui/开锁声.mp3" id="3_o5jv1"]
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="3_qsms8"]

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=8 format=3 uid="uid://ci5anaxsa1apl"]
[ext_resource type="Script" path="res://scene/entity/local_inspectable.gd" id="1_85el0"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/ux/sfx.tscn" id="2_h0c2s"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="2_h0c2s"]
[ext_resource type="AudioStream" uid="uid://byjcmxy5crce5" path="res://asset/audio/sfx/ui/纸条.mp3" id="3_3ldx7"]
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="3_o562w"]
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_do8tr"]

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=7 format=3 uid="uid://jr1yd46wm5je"]
[ext_resource type="Script" path="res://scene/entity/note.gd" id="1_3igk8"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/ux/sfx.tscn" id="2_qocmg"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="2_qocmg"]
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="3_xb81s"]
[ext_resource type="AudioStream" uid="uid://byjcmxy5crce5" path="res://asset/audio/sfx/ui/纸条.mp3" id="3_y3pwa"]
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="5_dhwp5"]

View File

@ -2,7 +2,7 @@
[ext_resource type="Script" path="res://scene/entity/npc.gd" id="1_jegr2"]
[ext_resource type="SpriteFrames" uid="uid://b7fhheih1hbvf" path="res://config/animation/entity_sprite_frames.tres" id="3_1e8sl"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/ux/sfx.tscn" id="3_4d53s"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="3_4d53s"]
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="4_jrmg5"]
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_nokx4"]
[ext_resource type="Texture2D" uid="uid://bwt5nxyncfuqu" path="res://asset/art/ui/action_mark/说话标识1.png" id="5_foitt"]

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=7 format=3 uid="uid://wyj4qdjyn4ql"]
[ext_resource type="Script" path="res://scene/entity/old/inspectable.gd" id="1_0pc4s"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/ux/sfx.tscn" id="2_wrnix"]
[ext_resource type="PackedScene" uid="uid://c85t6stvytvjn" path="res://scene/entity/general/sfx.tscn" id="2_wrnix"]
[ext_resource type="AudioStream" uid="uid://dky3j8lwcy5sk" path="res://asset/audio/sfx/ui/物品查看.mp3" id="3_kilnm"]
[ext_resource type="Texture2D" uid="uid://bei1s1uucktso" path="res://asset/art/tool/neutral_point_light.webp" id="3_vbivp"]
[ext_resource type="PackedScene" uid="uid://c4tipnj1cr1j3" path="res://scene/entity/ux/sign.tscn" id="4_1yty8"]

Some files were not shown because too many files have changed in this diff Show More