盒子猫优化;push_audio.sh

This commit is contained in:
cakipaul 2025-06-17 18:23:26 +08:00
parent 5c9449c3fa
commit 240120bb4f
18 changed files with 161 additions and 787 deletions

View File

@ -1,103 +0,0 @@
{
"items": [
{
"event_date": "12/25/2024",
"item_id": "17350940343608",
"log_content": "完善《从策划、资产(美术、音效)到程序的工作流说明》:\n* 三层定义:上层两端(策划+资产)、下层数据、程序中台\n* 五类定义:时间线纲要,实体,场景与部署点,事件与 CG小游戏\n* 工作流六步:定义资产规格,定义部署规格,定义音效规格,生产并组装资产,检阅与意见\n* 关于 UX 理念与分工的说明",
"tags": [
"2@design",
"3@manage_tool"
],
"update_date": "12/25/2024"
},
{
"event_date": "12/24/2024",
"item_id": "17350401808351",
"log_content": "实现自动存档功能:\n* 整合存档资源在 AssembledArchive 下\n* 多存档(隔离) + 单配置(全局)\n* 可配置定时保存\n* 游戏时长记录:存档游戏时长 + 全局游戏时长\n",
"tags": [
"2@code"
],
"update_date": "12/24/2024"
},
{
"event_date": "12/24/2024",
"item_id": "17350028043797",
"log_content": "* 完善消息提示功能\n * 0.5s 浮现,显示 3s0.5s 隐藏(通过调整 alpha 通道实现)\n * 支持堆积消息\n * 如果有堆积的消息,显示 2s而不是 3s",
"tags": [
"2@ui",
"2@code"
],
"update_date": "12/24/2024"
},
{
"event_date": "12/23/2024",
"item_id": "4123576587",
"log_content": "* 完善消息提示功能\n * 0.5s 浮现,显示 3s0.5s 隐藏(通过调整 alpha 通道实现)\n * 支持堆积消息\n * 如果有堆积的消息,显示 2s而不是 3s",
"tags": [
"2@ui",
"2@code"
],
"update_date": "12/24/2024"
},
{
"event_date": "12/22/2024",
"item_id": "876528753689",
"log_content": "* 完成动画导入功能:\n * 自动检测目录下文件,帧排序后,导入到: res://config/animation/player_sprite_frames.tres \n * 文件名 mapping 到动画 animation 名称\n * 取第一帧作动画\n * 镜像动画\n * 网格化检阅",
"tags": [
"2@code",
"3@art_tool",
"2@animation"
],
"update_date": "12/22/2024"
},
{
"event_date": "12/20/2024",
"item_id": "2546254798879",
"log_content": "* 游戏时间戳\n * 全局游戏时长记录\n * 当前存档时间状态:章节进度,游戏时长等\n* 场景管理器:发送消息浮窗\n* 事件系统:\n * 数据格式(四要素):\n * 时间chapter_section时间戳周目状态等\n * 地点场景id坐标\n * 实体实体id状态\n * 实体动作action_id\n * 流程:发送事件流程,消费事件流程\n* 存档:\n * 保存全局配置(如游戏总时长,周目数)\n * 分存档保存当前存档状态:时间、场景、实体\n* 组装实体:\n * 规格配置:进行中\n * 素材填充:进行中",
"tags": [
"2@code",
"2@design"
],
"update_date": "12/22/2024"
},
{
"event_date": "12/19/2024",
"item_id": "52643524662456",
"log_content": "* 角色移动状态机功能:静止/行走/奔跑/躺卧移动/上下爬行\n * 允许锁定移动/锁定奔跑,躺卧移动与上下爬行互斥\n* 规格化调整:\n * UI 规格化物品HUD对话浮窗\n * 场景规格化:层次背景,角色\n* 镜头 Marker :随玩家移动方向轻微偏移,优化视野细节",
"tags": [
"2@design",
"2@code",
"2@animation"
],
"update_date": "12/22/2024"
},
{
"event_date": "12/18/2024",
"item_id": "5423765786358",
"log_content": "确定资源类型,围绕规格化的资源\n基本工作流设计\n完善 HUD 功能",
"tags": [
"2@ui",
"2@design"
],
"update_date": "12/22/2024"
},
{
"event_date": "12/17/2024",
"item_id": "11242354",
"log_content": "加入基础的游戏背景、角色行走功能",
"tags": [
"2@code"
],
"update_date": "12/22/2024"
},
{
"event_date": "12/16/2024",
"item_id": "17343458739570",
"log_content": "新建项目等",
"tags": [
"2@design"
],
"update_date": "12/22/2024"
}
]
}

View File

@ -1,140 +0,0 @@
extends CanvasLayer
class_name ProjectLogPanel
enum TAG_TYPE{VERSION=0,FIX=1,FEATURE=2,TOOL=3}
const TAG_TYPE_COLOR_DICT = {
TAG_TYPE.VERSION: Color.SKY_BLUE,
TAG_TYPE.FIX: Color.RED,
TAG_TYPE.FEATURE: Color.AQUAMARINE,
TAG_TYPE.TOOL: Color.ORCHID
}
const TAG_DICT = {
TAG_TYPE.VERSION:["demo","0.1","1.0"],
TAG_TYPE.FIX:["bugfix","uxfix"],
TAG_TYPE.FEATURE:["code","design","ui","audio","art","animation"],
TAG_TYPE.TOOL:["art_tool","log_tool","manage_tool"],
}
#const LOG_CONFIG_KEY_prefix = "log_panel_json_"
const LOG_DATA_DIR = "res://log/logger/logs/"
var log_files = []
var current_log_file
const IMAGE_DIR = ""
@onready var add_btn := %Add
@onready var save_btn := %Save
@onready var archives_btn := %Archives as MenuButton
@onready var archives_label := %ArchiveLabel as Label
@onready var log_items_container = %LogItemsContainer
const LOG_ITEM_GROUP = "log_item"
const LOG_ITEM_GROUP_MENBER = "log_item[{0}]"
var log_item_scene = preload("res://log/logger/project_log_panel_item.tscn")
var data = {"items":[]} as Dictionary
func _ready():
add_btn.pressed.connect(_on_add)
save_btn.pressed.connect(save_logs)
archives_btn.get_popup().id_pressed.connect(_on_archive_switch)
_load_archives()
_on_archive_switch(log_files.find("v-demo-mountwuwang.json"))
# var quat = Quaternion.from_euler(Vector3(deg_to_rad(10),0,deg_to_rad(10)))
# print(quat)
# quat = quat.normalized()
# print(quat)
# quat = Quaternion(Vector3(1,0,0),deg_to_rad(10)) * Quaternion(Vector3(0,0,1),deg_to_rad(10))
# print(quat)
# quat = quat.normalized()
# print(quat)
func _load_archives():
log_files = DirAccess.get_files_at(LOG_DATA_DIR) as PackedStringArray
if log_files.size() == 0:
printerr("_load_archives no file exists:",LOG_DATA_DIR)
for i in range(0,log_files.size()):
archives_btn.get_popup().add_item(log_files[i],i)
_on_archive_switch(0)
func _load_logs():
var path = _get_curr_path()
if !FileAccess.file_exists(path):
printerr("_load_logs no file exists:",path)
return
var json = ResourceLoader.load(path,"",ResourceLoader.CACHE_MODE_IGNORE)
#print("load data=",json.data)
print("loaded data")
data = json.data
if !data.has("items"):
data["items"] = []
_refresh_items()
func _get_curr_path():
return LOG_DATA_DIR + current_log_file
func _refresh_items():
var items = data["items"] as Array
get_tree().call_group(LOG_ITEM_GROUP, "queue_free")
for i in range(items.size()):
var item_instance = log_item_scene.instantiate() as Control
item_instance.add_to_group(LOG_ITEM_GROUP)
item_instance.add_to_group(LOG_ITEM_GROUP_MENBER.format([]))
item_instance.update.connect(_on_log_item_update.bind(i))
#item_instance.save.connect(_on_log_item_save.bind(i))
item_instance.remove.connect(_on_log_item_remove.bind(i))
log_items_container.add_child(item_instance)
if items[i] is Dictionary:
item_instance.load_item(items[i])
elif items[i] is String:
var item_dict = JSON.parse_string(items[i])
item_instance.load_item(item_dict)
else :
push_error("unknow type items[",i,"]=",items[i])
func save_logs():
var path = _get_curr_path()
if !FileAccess.file_exists(path):
printerr("save_logs no file exists:",path)
return
#print("save logs data=", data)
print("saved logs")
var file := FileAccess.open(path, FileAccess.WRITE_READ) as FileAccess
file.store_string(JSON.stringify(data, "\t"))
file.close()
func _on_log_item_update(item:LogItem.ItemData, index:int):
var json = item.to_json_dict()
print("_on_log_item_update item=", json)
data["items"][index] = json
func _on_log_item_save(item:LogItem.ItemData, index:int):
var json = item.to_json_dict()
print("_on_log_item_save item=", json)
data["items"][index] = json
save_logs()
func _on_log_item_remove(index:int):
(data["items"] as Array).remove_at(index)
save_logs()
# reset index for each item
_refresh_items()
func _on_add():
(data["items"] as Array).push_front({})
save_logs()
# reset index for each item
_refresh_items()
func _on_archive_switch(id:int):
current_log_file = log_files[id]
archives_label.text = log_files[id]
_load_logs()
func _unhandled_input(event):
if event.is_action("save"):
save_logs()

View File

@ -1 +0,0 @@
uid://caasronuiver3

View File

@ -1,119 +0,0 @@
[gd_scene load_steps=4 format=3 uid="uid://b3n06jtdpqy5y"]
[ext_resource type="Script" uid="uid://caasronuiver3" path="res://log/logger/project_log_panel.gd" id="1_2rhk7"]
[ext_resource type="PackedScene" uid="uid://bdy4u3e7rmo7f" path="res://ui/button/sound_button.tscn" id="2_71u5c"]
[ext_resource type="PackedScene" uid="uid://dhvo15vyxpkja" path="res://log/logger/project_log_panel_item.tscn" id="4_1yhgi"]
[node name="ProjectLogPanel" type="CanvasLayer"]
script = ExtResource("1_2rhk7")
[node name="MarginContainer" type="MarginContainer" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_left = 12
theme_override_constants/margin_top = 6
theme_override_constants/margin_right = 12
theme_override_constants/margin_bottom = 6
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_vertical = 4
alignment = 2
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
theme_override_constants/margin_left = 12
theme_override_constants/margin_top = 6
theme_override_constants/margin_right = 12
theme_override_constants/margin_bottom = 6
[node name="Title" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer/HBoxContainer/MarginContainer"]
layout_mode = 2
size_flags_horizontal = 4
theme_override_colors/font_color = Color(0.670588, 0.952941, 0.972549, 1)
theme_override_colors/font_shadow_color = Color(0.180392, 0.180392, 0.180392, 1)
theme_override_colors/font_outline_color = Color(0.0156863, 0.258824, 0.341176, 1)
theme_override_constants/shadow_offset_x = 2
theme_override_constants/shadow_offset_y = 2
theme_override_constants/outline_size = 4
theme_override_constants/shadow_outline_size = 12
theme_override_font_sizes/font_size = 24
text = "Project Log"
[node name="Add" parent="MarginContainer/VBoxContainer/MarginContainer/HBoxContainer" instance=ExtResource("2_71u5c")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 4
text = "Add"
script = null
[node name="Save" parent="MarginContainer/VBoxContainer/MarginContainer/HBoxContainer" instance=ExtResource("2_71u5c")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 4
text = "Save"
script = null
[node name="Archives" type="MenuButton" parent="MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
text = "Archives"
flat = false
[node name="ArchiveLabel" type="Label" parent="MarginContainer/VBoxContainer/MarginContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
[node name="MarginContainer2" type="MarginContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer/MarginContainer2"]
layout_mode = 2
size_flags_vertical = 3
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/MarginContainer2/ScrollContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/margin_left = 4
theme_override_constants/margin_top = 4
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 4
[node name="LogItemsContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/MarginContainer2/ScrollContainer/MarginContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 0
alignment = 1
[node name="LogItem" parent="MarginContainer/VBoxContainer/MarginContainer2/ScrollContainer/MarginContainer/LogItemsContainer" instance=ExtResource("4_1yhgi")]
visible = false
layout_mode = 2
[node name="LogItem2" parent="MarginContainer/VBoxContainer/MarginContainer2/ScrollContainer/MarginContainer/LogItemsContainer" instance=ExtResource("4_1yhgi")]
visible = false
layout_mode = 2

View File

@ -1,198 +0,0 @@
extends HBoxContainer
class_name LogItem
#signal save(data:ItemData)
signal update(data: ItemData)
signal remove
const TAG_BTN_GROUP_PREFIX = "tag_btn"
@onready var log_content := %LogContent as TextEdit
@onready var event_date := %EventDate as Label
#@onready var update_date := %LogUpdateDate as Label
@onready var tags_container := %TagsContainer as GridContainer
@onready var add_tag_btn := %AddTag as MenuButton
@onready var reload_btn = %Reload
@onready var save_btn = %Save
@onready var delete_btn = %Delete
var original_data := ItemData.new()
var data: ItemData = original_data
class ItemData:
var item_id := _generate_random_id()
var log_content := "":
set(new_val):
if new_val != log_content:
update_date = _get_current_time()
log_content = new_val
var tags := []:
set(new_val):
update_date = _get_current_time()
tags = new_val
var event_date := _get_current_time()
var update_date := _get_current_time()
func _generate_random_id() -> String:
# float time
var timestamp := Time.get_unix_time_from_system()
return str(int(timestamp * 10000 + randi_range(0, 10000)))
func _get_current_time() -> String:
# Returns the current date as a dictionary of keys: year, month, day, and weekday.
var dict = Time.get_date_dict_from_system()
return str(dict["month"]) + "/" + str(dict["day"]) + "/" + str(dict["year"])
func duplicate() -> ItemData:
var item := ItemData.new()
item.item_id = item_id
item.log_content = log_content
item.tags = tags.duplicate()
item.event_date = event_date
item.update_date = update_date
return item
func to_json_dict() -> Dictionary:
# JSON.stringify(self) doesn't work
return {
"item_id": item_id,
"log_content": log_content,
"tags": tags,
"event_date": event_date,
"update_date": update_date,
}
static func parse(data: Dictionary) -> ItemData:
var item := ItemData.new()
if data.has("item_id"):
item.item_id = data["item_id"]
if data.has("tags"):
item.tags = data["tags"]
if data.has("log_content"):
item.log_content = data["log_content"]
if data.has("event_date"):
item.event_date = data["event_date"]
if data.has("update_date"):
item.update_date = data["update_date"]
return item
# {id:{"btn":btn,"key":key,"name":name,"id":id}}
static var tag_btns = {}
static var tag_key_to_id_map = {}
static var tag_shadow_color = Color.html("1b1b1b")
static var tag_shadow_outline_size = 1
# id->key
var current_tags = {}
func _ready():
_load_tag_popup()
reload_btn.pressed.connect(_on_reload_pressed)
#save_btn.pressed.connect(_save_item)
delete_btn.pressed.connect(_remove_signal)
log_content.text_changed.connect(_on_log_content_changed)
call_deferred("_update_signal")
#load_item(original_data)
static func _static_init():
var tag_id := 0
for tag_type in ProjectLogPanel.TAG_TYPE.values():
var tag_color = ProjectLogPanel.TAG_TYPE_COLOR_DICT[tag_type]
for tag in ProjectLogPanel.TAG_DICT[tag_type]:
var tag_btn = Button.new() as Button
tag_btn.add_theme_color_override("font_color", tag_color)
tag_btn.add_theme_color_override("font_shadow_color", tag_shadow_color)
tag_btn.add_theme_constant_override("shadow_outline_size", tag_shadow_outline_size)
tag_btn.text = tag
var tag_key = _get_tag_key(tag_type, tag)
tag_btns[tag_id] = {"btn": tag_btn, "id": tag_id, "name": tag, "key": tag_key}
tag_key_to_id_map[tag_key] = tag_id
tag_id += 1
static func _get_tag_key(tag_type: ProjectLogPanel.TAG_TYPE, tag: String):
return str(tag_type) + "@" + tag
func _load_tag_popup():
var popup = add_tag_btn.get_popup() as PopupMenu
for btn_dict in tag_btns.values():
popup.add_item(btn_dict["name"], btn_dict["id"])
popup.id_pressed.connect(_on_popup_menu_pressed)
func _reload_tag_btns():
var btn_group = TAG_BTN_GROUP_PREFIX + data.item_id
get_tree().call_group(btn_group, "queue_free")
current_tags.clear()
for tag_key in data["tags"]:
if !tag_key_to_id_map.has(tag_key):
push_error("tag_key has been removed!! tag_key=", tag_key)
continue
var tag_id = tag_key_to_id_map[tag_key]
current_tags[tag_id] = tag_key
var btn = (tag_btns[tag_id]["btn"] as Button).duplicate()
btn.pressed.connect(_on_tag_btn_pressed.bind(btn, tag_id))
btn.add_to_group(btn_group)
tags_container.add_child(btn)
func load_item(new_data: Dictionary):
if new_data.keys().size() != 0:
original_data = ItemData.parse(new_data)
_reload_original_data()
func _reload_original_data():
data = original_data.duplicate()
#print("_load_item_data data=", data)
log_content.text = data.log_content
event_date.text = data.event_date
#update_date.text = data["update_date"]
_reload_tag_btns()
func _on_popup_menu_pressed(id: int):
#{"btn":btn,"key":key,"name":name,"id":id}
if !current_tags.has(id):
current_tags[id] = tag_btns[id]["key"]
data.tags = current_tags.values()
_update_signal()
#_save_item()
_reload_tag_btns()
func _on_log_content_changed():
data["log_content"] = log_content.text
_update_signal()
func _on_tag_btn_pressed(btn: Control, id: int):
current_tags.erase(id)
btn.queue_free()
data.tags = current_tags.values()
_update_signal()
#_save_item()
#func _save_item():
#save.emit(data)
func _update_signal():
update.emit(data)
func _remove_signal():
remove.emit()
func _on_reload_pressed():
_reload_original_data()
_update_signal()

View File

@ -1 +0,0 @@
uid://ce45ux1l1xt5k

View File

@ -1,86 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://dhvo15vyxpkja"]
[ext_resource type="Script" uid="uid://ce45ux1l1xt5k" path="res://log/logger/project_log_panel_item.gd" id="1_gn7ev"]
[ext_resource type="PackedScene" uid="uid://bdy4u3e7rmo7f" path="res://ui/button/sound_button.tscn" id="2_wb6pu"]
[node name="LogItem" type="HBoxContainer"]
anchors_preset = 14
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_top = -4.0
offset_bottom = 4.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_gn7ev")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 2
size_flags_horizontal = 3
[node name="LogContent" type="TextEdit" parent="MarginContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "123"
wrap_mode = 1
scroll_fit_content_height = true
[node name="HBoxContainer" type="HBoxContainer" parent="."]
layout_mode = 2
[node name="TagsContainer" type="GridContainer" parent="HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
columns = 2
[node name="AddTag" type="MenuButton" parent="HBoxContainer/TagsContainer"]
unique_name_in_owner = true
layout_mode = 2
text = "Tags"
[node name="VBoxContainer2" type="VBoxContainer" parent="."]
layout_mode = 2
[node name="EventDate" type="Label" parent="VBoxContainer2"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.929412, 0.929412, 0.929412, 1)
theme_override_colors/font_shadow_color = Color(0.105882, 0.105882, 0.105882, 1)
theme_override_constants/shadow_offset_x = 1
theme_override_constants/shadow_offset_y = 1
theme_override_constants/shadow_outline_size = 4
text = "01/01/24"
[node name="LogUpdateDate" type="Label" parent="VBoxContainer2"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "01/01/24"
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer2"]
layout_mode = 2
[node name="Reload" parent="VBoxContainer2/HBoxContainer" instance=ExtResource("2_wb6pu")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
text = "Reload"
script = null
[node name="Save" parent="VBoxContainer2/HBoxContainer" instance=ExtResource("2_wb6pu")]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
text = "Save"
script = null
[node name="Delete" parent="VBoxContainer2/HBoxContainer" instance=ExtResource("2_wb6pu")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
text = "Delete"
script = null

106
push_audio.sh Normal file
View File

@ -0,0 +1,106 @@
#!/bin/bash
# ===================================================================
# push_audio.sh
# 仅提交并推送 *.tscn 音效改动到 audio 分支,其它改动会被永久丢弃!
# ===================================================================
# ⚠️ 警告:脚本执行后,非 *.tscn 的本地修改将被
# ⚠️ git reset --hard + git clean -fd
# ⚠️ 彻底删除且无法找回,请确认没有要保留的改动!
# -------------------------------------------------------------------
set -euo pipefail
IFS=$'\n\t'
REMOTE=origin
BRANCH=audio
## -------------------------------------------------------------
color() { printf '\033[%sm%s\033[0m\n' "$1" "$2"; }
info() { color "1;34" "👉 $*"; } # 蓝
warn() { color "1;33" "⚠️ $*"; } # 黄
die() { color "1;31" "$*"; exit 1; } # 红
## -------------------------------------------------------------
# 0. 检测 Git、操作系统、确认危险操作
## -------------------------------------------------------------
command -v git >/dev/null 2>&1 || die "未安装 Git"
git_version=$(git --version | awk '{print $3}')
info "Git 版本:$git_version"
warn "脚本将丢弃所有非 *.tscn 改动5 秒内 Ctrl-C 可取消"
sleep 5
## -------------------------------------------------------------
# 1. 认证检查HTTP/S 及 SSH 两种)
## -------------------------------------------------------------
info "检查 Git 认证状态..."
remote_url=$(git remote get-url "$REMOTE" 2>/dev/null) \
|| die "远程 $REMOTE 不存在,请先 git remote add"
if [[ "$remote_url" =~ ^https?:// ]]; then
if ! git ls-remote "$REMOTE" &>/dev/null; then
die "HTTP(S) 鉴权失败,请先完成登录或配置 token 再执行脚本"
fi
info "HTTP(S) 鉴权通过"
else
# SSH检测是否有可用密钥
if ! ssh -Tq "$(echo "$remote_url" | sed 's#.*@##;s/:.*##')" 2>&1 \
| grep -qi "successfully authenticated"; then
warn "SSH 连接测试结果不确定,若后续 push 失败请检查 SSH key"
fi
fi
## -------------------------------------------------------------
# 2. 切换到 audio 分支
## -------------------------------------------------------------
current_branch=$(git rev-parse --abbrev-ref HEAD)
if [[ "$current_branch" != "$BRANCH" ]]; then
info "切换分支 $current_branch$BRANCH ..."
git switch "$BRANCH" 2>/dev/null || git checkout "$BRANCH" \
|| die "切换失败,请确认分支 $BRANCH 存在"
fi
## -------------------------------------------------------------
# 3. 仅暂存 / 提交 *.tscn 改动
## -------------------------------------------------------------
info "检测 *.tscn 改动..."
# 取消任何已暂存的内容,保持工作区状态不变
git reset --quiet
# 标记并暂存 tscn 文件(包括新增)
git add -u -- '*.tscn' 2>/dev/null || true
git add --intent-to-add -- '*.tscn' 2>/dev/null || true
git add -- '*.tscn' 2>/dev/null || true
if git diff --cached --quiet; then
info "没有需要提交的 tscn 改动"
else
msg="调整音效 dB $(date '+%F %H:%M')"
git commit -m "$msg"
info "已提交:$msg"
fi
## -------------------------------------------------------------
# 4. 丢弃其它改动
## -------------------------------------------------------------
info "丢弃非 *.tscn 的本地改动..."
git reset --hard # 回到 HEAD
git clean -fdq # 删除未跟踪文件/目录
## -------------------------------------------------------------
# 5. 拉取远程最新并 rebase
## -------------------------------------------------------------
info "拉取远程最新并 rebase..."
if ! git pull --rebase "$REMOTE" "$BRANCH"; then
die "rebase 冲突,请手动解决完毕后运行:\n git rebase --continue\n再重新执行脚本"
fi
## -------------------------------------------------------------
# 6. 推送
## -------------------------------------------------------------
info "推送到 $REMOTE/$BRANCH ..."
git push "$REMOTE" "$BRANCH" || die "推送失败,请检查网络/权限"
color "1;32" "✅ tscn 改动已成功推送,其余改动已被抛弃"

View File

@ -342,7 +342,9 @@ animation = &"疯子跑动"
autostart = false autostart = false
action_configs = Array[Dictionary]([{ action_configs = Array[Dictionary]([{
"animation_intro": "疯子跪下", "animation_intro": "疯子跪下",
&"animation_next": "疯子撞墙" &"animation_next": "疯子撞墙",
"animation_wait_time": 0.0,
"intro_loop": 1
}]) }])
[node name="疯子撞墙Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/疯子撞墙"] [node name="疯子撞墙Sfx2D" type="AudioStreamPlayer2D" parent="Ground/DeployLayer/疯子撞墙"]
@ -381,6 +383,7 @@ position = Vector2(289, 16)
packed_scene = ExtResource("16_p6da7") packed_scene = ExtResource("16_p6da7")
[node name="c02_final" type="Node2D" parent="Ground/DeployLayer" index="12"] [node name="c02_final" type="Node2D" parent="Ground/DeployLayer" index="12"]
visible = false
[node name="瞎子" parent="Ground/DeployLayer/c02_final" instance=ExtResource("10_p6da7")] [node name="瞎子" parent="Ground/DeployLayer/c02_final" instance=ExtResource("10_p6da7")]
position = Vector2(277, 29) position = Vector2(277, 29)

View File

@ -1,10 +1,9 @@
[gd_scene load_steps=6 format=3 uid="uid://da4cuf2i3nwpj"] [gd_scene load_steps=5 format=3 uid="uid://da4cuf2i3nwpj"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ngo77"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_ngo77"]
[ext_resource type="Script" uid="uid://cyd1xo106unfk" path="res://scene/ground/scene/c02/s12_animation.gd" id="2_7ah3n"] [ext_resource type="Script" uid="uid://cyd1xo106unfk" path="res://scene/ground/scene/c02/s12_animation.gd" id="2_7ah3n"]
[ext_resource type="Texture2D" uid="uid://yn00uls1kvn3" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_初始.png" id="3_oskpk"] [ext_resource type="Texture2D" uid="uid://yn00uls1kvn3" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_初始.png" id="3_oskpk"]
[ext_resource type="Texture2D" uid="uid://xhksp8eu3jqy" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写_镂空.png" id="6_oskpk"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="4_vv3sh"]
[ext_resource type="Texture2D" uid="uid://d1seskftkw08q" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写示意图.png" id="7_72mc1"]
[node name="S12" type="Node2D"] [node name="S12" type="Node2D"]
@ -12,7 +11,6 @@
scene_name = "c02_s12" scene_name = "c02_s12"
player_y = 85 player_y = 85
footstep_type = "盒子猫" footstep_type = "盒子猫"
main_scene = null
[node name="AnimationPlayer" parent="Ground" index="0"] [node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_7ah3n") script = ExtResource("2_7ah3n")
@ -42,24 +40,6 @@ position = Vector2(3584, -7)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 400, 150) points = PackedVector2Array(37, 150, 400, 150)
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"] [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("4_vv3sh")]
layer = 0
[node name="TextureRect" type="TextureRect" parent="Ground/CanvasLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_oskpk")
[node name="TextureRect2" type="TextureRect" parent="Ground/CanvasLayer"]
modulate = Color(1, 1, 1, 0.380392)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("7_72mc1")
[editable path="Ground"] [editable path="Ground"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://bvjutch6jex0v"] [gd_scene load_steps=8 format=3 uid="uid://bvjutch6jex0v"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_71lma"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_71lma"]
[ext_resource type="Script" uid="uid://28ujp27cbdh2" path="res://scene/ground/scene/c02/s13_animation.gd" id="2_w5nqu"] [ext_resource type="Script" uid="uid://28ujp27cbdh2" path="res://scene/ground/scene/c02/s13_animation.gd" id="2_w5nqu"]
@ -6,15 +6,13 @@
[ext_resource type="Texture2D" uid="uid://b3ootg88b63rb" path="res://asset/art/scene/c02/旧版/s13_院子诡异版/fg_楼梯调色后.png" id="4_4adgb"] [ext_resource type="Texture2D" uid="uid://b3ootg88b63rb" path="res://asset/art/scene/c02/旧版/s13_院子诡异版/fg_楼梯调色后.png" id="4_4adgb"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_u2fv1"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_u2fv1"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="5_gge8e"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="5_gge8e"]
[ext_resource type="Texture2D" uid="uid://xhksp8eu3jqy" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写_镂空.png" id="5_miykx"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="7_u2fv1"]
[ext_resource type="Texture2D" uid="uid://d1seskftkw08q" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写示意图.png" id="6_u2fv1"]
[node name="S13" type="Node2D"] [node name="S13" type="Node2D"]
[node name="Ground" parent="." instance=ExtResource("1_71lma")] [node name="Ground" parent="." instance=ExtResource("1_71lma")]
scene_name = "c02_s13" scene_name = "c02_s13"
footstep_type = "盒子猫" footstep_type = "盒子猫"
main_scene = null
[node name="AnimationPlayer" parent="Ground" index="0"] [node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_w5nqu") script = ExtResource("2_w5nqu")
@ -45,6 +43,8 @@ status = "opened"
position = Vector2(852, 0) position = Vector2(852, 0)
note_key = "notes_无法通过" note_key = "notes_无法通过"
[node name="Sprite2D" type="Sprite2D" parent="Ground/DeployLayer" index="4"]
[node name="MainPlayer" parent="Ground" index="4"] [node name="MainPlayer" parent="Ground" index="4"]
character = "盒子猫" character = "盒子猫"
@ -59,24 +59,6 @@ scale = Vector2(1.05, 1.05)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 870, 150) points = PackedVector2Array(37, 150, 870, 150)
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"] [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("7_u2fv1")]
layer = 0
[node name="TextureRect" type="TextureRect" parent="Ground/CanvasLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_miykx")
[node name="TextureRect2" type="TextureRect" parent="Ground/CanvasLayer"]
modulate = Color(1, 1, 1, 0.380392)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_u2fv1")
[editable path="Ground"] [editable path="Ground"]

View File

@ -1,18 +1,16 @@
[gd_scene load_steps=7 format=3 uid="uid://d0p4x5st2r315"] [gd_scene load_steps=6 format=3 uid="uid://d0p4x5st2r315"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_cr1hi"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_cr1hi"]
[ext_resource type="Script" uid="uid://bjisuntcem2lv" path="res://scene/ground/scene/c02/s14_animation.gd" id="2_o47bv"] [ext_resource type="Script" uid="uid://bjisuntcem2lv" path="res://scene/ground/scene/c02/s14_animation.gd" id="2_o47bv"]
[ext_resource type="Texture2D" uid="uid://y0e47513ca22" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_二楼内侧楼道粉笔画.png" id="3_cr1hi"] [ext_resource type="Texture2D" uid="uid://y0e47513ca22" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_二楼内侧楼道粉笔画.png" id="3_cr1hi"]
[ext_resource type="Texture2D" uid="uid://xhksp8eu3jqy" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写_镂空.png" id="4_kss0n"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_o47bv"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_o47bv"]
[ext_resource type="Texture2D" uid="uid://d1seskftkw08q" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写示意图.png" id="5_3yfjs"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="5_cr1hi"]
[node name="S14" type="Node2D"] [node name="S14" type="Node2D"]
[node name="Ground" parent="." instance=ExtResource("1_cr1hi")] [node name="Ground" parent="." instance=ExtResource("1_cr1hi")]
scene_name = "c02_s14" scene_name = "c02_s14"
footstep_type = "盒子猫" footstep_type = "盒子猫"
main_scene = null
[node name="AnimationPlayer" parent="Ground" index="0"] [node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_o47bv") script = ExtResource("2_o47bv")
@ -44,24 +42,6 @@ character = "盒子猫"
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 660, 150) points = PackedVector2Array(37, 150, 660, 150)
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"] [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("5_cr1hi")]
layer = 0
[node name="TextureRect" type="TextureRect" parent="Ground/CanvasLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_kss0n")
[node name="TextureRect2" type="TextureRect" parent="Ground/CanvasLayer"]
modulate = Color(1, 1, 1, 0.380392)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_3yfjs")
[editable path="Ground"] [editable path="Ground"]

View File

@ -1,11 +1,10 @@
[gd_scene load_steps=7 format=3 uid="uid://b21p53g42j2nt"] [gd_scene load_steps=6 format=3 uid="uid://b21p53g42j2nt"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qxg0l"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_qxg0l"]
[ext_resource type="Script" uid="uid://ebaq235h32fd" path="res://scene/ground/scene/c02/s15_animation.gd" id="2_etqjj"] [ext_resource type="Script" uid="uid://ebaq235h32fd" path="res://scene/ground/scene/c02/s15_animation.gd" id="2_etqjj"]
[ext_resource type="Texture2D" uid="uid://c4eb71kdnqy3y" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_一楼内侧楼道粉笔画.png" id="3_qxg0l"] [ext_resource type="Texture2D" uid="uid://c4eb71kdnqy3y" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_一楼内侧楼道粉笔画.png" id="3_qxg0l"]
[ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="4_etqjj"] [ext_resource type="PackedScene" uid="uid://jr1yd46wm5je" path="res://scene/entity/note.tscn" id="4_etqjj"]
[ext_resource type="Texture2D" uid="uid://xhksp8eu3jqy" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写_镂空.png" id="5_n8ki2"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="5_isic3"]
[ext_resource type="Texture2D" uid="uid://d1seskftkw08q" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写示意图.png" id="6_e2r11"]
[node name="S15" type="Node2D"] [node name="S15" type="Node2D"]
@ -13,7 +12,6 @@
scene_name = "c02_s15" scene_name = "c02_s15"
player_y = 60 player_y = 60
footstep_type = "盒子猫" footstep_type = "盒子猫"
main_scene = null
[node name="AnimationPlayer" parent="Ground" index="0"] [node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_etqjj") script = ExtResource("2_etqjj")
@ -46,24 +44,6 @@ position = Vector2(-1, -15)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 660, 150) points = PackedVector2Array(37, 150, 660, 150)
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"] [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("5_isic3")]
layer = 0
[node name="TextureRect" type="TextureRect" parent="Ground/CanvasLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_n8ki2")
[node name="TextureRect2" type="TextureRect" parent="Ground/CanvasLayer"]
modulate = Color(1, 1, 1, 0.380392)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_e2r11")
[editable path="Ground"] [editable path="Ground"]

View File

@ -1,11 +1,10 @@
[gd_scene load_steps=7 format=3 uid="uid://22hc3oe8t0id"] [gd_scene load_steps=6 format=3 uid="uid://22hc3oe8t0id"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_umyae"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_umyae"]
[ext_resource type="Script" uid="uid://dx2w5v1erjyls" path="res://scene/ground/scene/c02/s16_animation.gd" id="2_tmnwc"] [ext_resource type="Script" uid="uid://dx2w5v1erjyls" path="res://scene/ground/scene/c02/s16_animation.gd" id="2_tmnwc"]
[ext_resource type="Texture2D" uid="uid://by4ymjhnma8c6" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_三楼内侧楼道粉笔画.png" id="3_tmnwc"] [ext_resource type="Texture2D" uid="uid://by4ymjhnma8c6" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_三楼内侧楼道粉笔画.png" id="3_tmnwc"]
[ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_qkv3g"] [ext_resource type="PackedScene" uid="uid://61pis75a8fdq" path="res://scene/entity/portal.tscn" id="4_qkv3g"]
[ext_resource type="Texture2D" uid="uid://xhksp8eu3jqy" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写_镂空.png" id="4_x2r6c"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="5_tmnwc"]
[ext_resource type="Texture2D" uid="uid://d1seskftkw08q" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写示意图.png" id="5_5kc5g"]
[node name="S16" type="Node2D"] [node name="S16" type="Node2D"]
@ -13,7 +12,6 @@
scene_name = "c02_s16" scene_name = "c02_s16"
player_y = 85 player_y = 85
footstep_type = "盒子猫" footstep_type = "盒子猫"
main_scene = null
[node name="AnimationPlayer" parent="Ground" index="0"] [node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_tmnwc") script = ExtResource("2_tmnwc")
@ -48,24 +46,6 @@ position = Vector2(3584, -7)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 655, 150) points = PackedVector2Array(37, 150, 655, 150)
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"] [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("5_tmnwc")]
layer = 0
[node name="TextureRect" type="TextureRect" parent="Ground/CanvasLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_x2r6c")
[node name="TextureRect2" type="TextureRect" parent="Ground/CanvasLayer"]
modulate = Color(1, 1, 1, 0.380392)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_5kc5g")
[editable path="Ground"] [editable path="Ground"]

View File

@ -1,10 +1,9 @@
[gd_scene load_steps=6 format=3 uid="uid://cbr6gbgrl2wb1"] [gd_scene load_steps=5 format=3 uid="uid://cbr6gbgrl2wb1"]
[ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_e436a"] [ext_resource type="PackedScene" uid="uid://dayyx4jerj7io" path="res://scene/ground/ground.tscn" id="1_e436a"]
[ext_resource type="Script" uid="uid://bkkhxiyblu2lo" path="res://scene/ground/scene/c02/s17_animation.gd" id="2_e436a"] [ext_resource type="Script" uid="uid://bkkhxiyblu2lo" path="res://scene/ground/scene/c02/s17_animation.gd" id="2_e436a"]
[ext_resource type="Texture2D" uid="uid://iyeqjguyrhog" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_三楼楼道粉笔画.png" id="3_e436a"] [ext_resource type="Texture2D" uid="uid://iyeqjguyrhog" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/bg_三楼楼道粉笔画.png" id="3_e436a"]
[ext_resource type="Texture2D" uid="uid://xhksp8eu3jqy" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写_镂空.png" id="4_uua76"] [ext_resource type="PackedScene" uid="uid://khwxm5qbfj3k" path="res://scene/ground/script/c02/盒子猫canvas_layer.tscn" id="4_n3bxc"]
[ext_resource type="Texture2D" uid="uid://d1seskftkw08q" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写示意图.png" id="5_4yexs"]
[node name="S17" type="Node2D"] [node name="S17" type="Node2D"]
@ -12,7 +11,6 @@
scene_name = "c02_s17" scene_name = "c02_s17"
player_y = 85 player_y = 85
footstep_type = "盒子猫" footstep_type = "盒子猫"
main_scene = null
[node name="AnimationPlayer" parent="Ground" index="0"] [node name="AnimationPlayer" parent="Ground" index="0"]
script = ExtResource("2_e436a") script = ExtResource("2_e436a")
@ -43,24 +41,6 @@ position = Vector2(3584, -7)
[node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"] [node name="PlayerLine2D" parent="Ground/ParallaxForeground" index="2"]
points = PackedVector2Array(37, 150, 860, 150) points = PackedVector2Array(37, 150, 860, 150)
[node name="CanvasLayer" type="CanvasLayer" parent="Ground"] [node name="盒子猫CanvasLayer" parent="Ground" instance=ExtResource("4_n3bxc")]
layer = 0
[node name="TextureRect" type="TextureRect" parent="Ground/CanvasLayer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_uua76")
[node name="TextureRect2" type="TextureRect" parent="Ground/CanvasLayer"]
modulate = Color(1, 1, 1, 0.380392)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("5_4yexs")
[editable path="Ground"] [editable path="Ground"]

View File

@ -0,0 +1,4 @@
extends CanvasLayer
func _ready():
visible = true

View File

@ -0,0 +1 @@
uid://ngb7wh7mqo0c

View File

@ -0,0 +1,26 @@
[gd_scene load_steps=4 format=3 uid="uid://khwxm5qbfj3k"]
[ext_resource type="Texture2D" uid="uid://xhksp8eu3jqy" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写_镂空.png" id="1_tgkyo"]
[ext_resource type="Script" uid="uid://ngb7wh7mqo0c" path="res://scene/ground/script/c02/盒子猫canvas_layer.gd" id="1_ygosu"]
[ext_resource type="Texture2D" uid="uid://d1seskftkw08q" path="res://asset/art/scene/c02/s08_瞎子卧室/墙上纸张特写/特写示意图.png" id="2_ygosu"]
[node name="盒子猫CanvasLayer" type="CanvasLayer"]
layer = 0
script = ExtResource("1_ygosu")
[node name="TextureRect" type="TextureRect" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("1_tgkyo")
[node name="TextureRect2" type="TextureRect" parent="."]
modulate = Color(1, 1, 1, 0.380392)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("2_ygosu")