主播模式 GeneralSprite2D

This commit is contained in:
cakipaul 2025-07-11 03:54:48 +08:00
parent 1ff41d38e0
commit 01a0cf5f1c
3 changed files with 54 additions and 8 deletions

View File

@ -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 控制氛围情绪音乐

View File

@ -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

View File

@ -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)