From 01a0cf5f1c72db493d0c90fb18cc57eaa22d380d Mon Sep 17 00:00:00 2001 From: cakipaul Date: Fri, 11 Jul 2025 03:54:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E6=92=AD=E6=A8=A1=E5=BC=8F=20GeneralS?= =?UTF-8?q?prite2D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ scene/entity/general_sprite2d.gd | 36 +++++++++++++++++++++----- scene/ground/scene/c03/s07_屠宰间.tscn | 23 ++++++++++++++-- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index dd857643..b9681dcc 100644 --- a/README.md +++ b/README.md @@ -181,4 +181,7 @@ current_scene 是通过 GroundLoader 加载的,在 ground loader 加载 ground - 影响 SignSnapper 的等待时长(如 Boss 战时加快节奏) - 转场 process 机制优化:暂停 & AnimationPlayer 保持运行 - EventManager 控制事件,使用 Event2D 控制绑定关系 +- 比 Event2D 更轻量灵活的 EventBinder,内有 updater 与 trigger 两种绑定 + - updater 由 event 驱动更新父节点状态 + - trigger 由父节点 signal 驱动更新 event - Vibe Control 控制氛围情绪音乐 diff --git a/scene/entity/general_sprite2d.gd b/scene/entity/general_sprite2d.gd index fae2c760..56a75919 100644 --- a/scene/entity/general_sprite2d.gd +++ b/scene/entity/general_sprite2d.gd @@ -1,11 +1,35 @@ -extends Node +@tool +class_name GeneralSprite2D extends Sprite2D + +@export var original_texture: Texture2D: + set(val): + if original_texture != val: + original_texture = val + texture = val +@export var safe_texture: Texture2D +@export_tool_button("模式切换预览") var toggle_preview := _toggle_preview -# Called when the node enters the scene tree for the first time. func _ready() -> void: - pass # Replace with function body. + original_texture = texture + if Engine.is_editor_hint(): + return + if GlobalConfigManager.config: + GlobalConfigManager.config.streamer_mode_updated.connect(_on_streamer_mode_updated) + _set_up_streamer_mode() -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass +func _on_streamer_mode_updated() -> void: + _set_up_streamer_mode() + + +func _set_up_streamer_mode() -> void: + var mode_on = GlobalConfigManager.config.streamer_mode + if mode_on: + texture = safe_texture + else: + texture = original_texture + + +func _toggle_preview() -> void: + texture = safe_texture if texture != safe_texture else original_texture diff --git a/scene/ground/scene/c03/s07_屠宰间.tscn b/scene/ground/scene/c03/s07_屠宰间.tscn index 0d34503f..5ac68f28 100644 --- a/scene/ground/scene/c03/s07_屠宰间.tscn +++ b/scene/ground/scene/c03/s07_屠宰间.tscn @@ -1,10 +1,15 @@ -[gd_scene load_steps=7 format=3 uid="uid://c67732f2we13j"] +[gd_scene load_steps=12 format=3 uid="uid://c67732f2we13j"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_oxs1j"] [ext_resource type="Script" path="res://scene/ground/scene/c03/s07_屠宰间.gd" id="2_oxs1j"] [ext_resource type="Script" uid="uid://cpejxlfni6n52" path="res://manager/audio_manager/vibe_sfx.gd" id="3_vyti6"] [ext_resource type="Texture2D" uid="uid://dv4jkirkqgb50" path="res://asset/art/scene/c03/s07_屠宰间/bg_屠宰间背景.png" id="4_oxs1j"] [ext_resource type="Texture2D" uid="uid://btdwnxrmipv4h" path="res://asset/art/scene/c03/s07_屠宰间/fg_屠宰间前景.png" id="5_0gnm3"] +[ext_resource type="Texture2D" uid="uid://cqwimk24aywdh" path="res://asset/art/scene/c03/s07_屠宰间/人肉.png" id="5_ptg0d"] +[ext_resource type="Script" uid="uid://dt8cfnm2og4h" path="res://scene/entity/general_sprite2d.gd" id="5_vyti6"] +[ext_resource type="Texture2D" uid="uid://bt3es1i4oep7a" path="res://asset/art/scene/c03/s07_屠宰间/和谐版/和谐版.png" id="7_koxkd"] +[ext_resource type="Texture2D" uid="uid://bffbhg8dlyu35" path="res://asset/art/scene/c03/s07_屠宰间/右边人体.png" id="8_abvxk"] +[ext_resource type="Texture2D" uid="uid://djbkksndyi6g2" path="res://asset/art/scene/c03/s07_屠宰间/和谐版/大猪皮.png" id="9_dly68"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_k01ve"] @@ -41,7 +46,21 @@ position = Vector2(873, 15) [node name="悬挂物" type="Node2D" parent="Ground/DeployLayer" index="2"] -[node name="Sprite2D" type="Sprite2D" parent="Ground/DeployLayer/悬挂物"] +[node name="GeneralSprite2D" type="Sprite2D" parent="Ground/DeployLayer/悬挂物"] +position = Vector2(201, -26) +texture = ExtResource("5_ptg0d") +script = ExtResource("5_vyti6") +original_texture = ExtResource("5_ptg0d") +safe_texture = ExtResource("7_koxkd") +metadata/_custom_type_script = "uid://dt8cfnm2og4h" + +[node name="GeneralSprite2D2" type="Sprite2D" parent="Ground/DeployLayer/悬挂物"] +position = Vector2(325, -25) +texture = ExtResource("8_abvxk") +script = ExtResource("5_vyti6") +original_texture = ExtResource("8_abvxk") +safe_texture = ExtResource("9_dly68") +metadata/_custom_type_script = "uid://dt8cfnm2og4h" [node name="MainPlayer" parent="Ground" index="5"] position = Vector2(63, 95)