demo 0.1 综合优化

This commit is contained in:
bbd_pc 2025-06-28 09:14:15 +08:00
parent 85c931d334
commit 8715f4a7ee
55 changed files with 89 additions and 466 deletions

View File

@ -45,6 +45,7 @@ GroundLoader 加载/切换 Ground 时,分为上下两段转场:
- AnimationPlayer 的 process_mode 并非 inderited而是 pausable。这意味着 AnimationPlayer 的 _on_ground_ready 在转场时仍旧可以直接运行。
- 同样独立设置的还有 Sfx/Sfx2D它们仍旧可以播放音频直到上半段转场结束
- CameraFocusMarker 也需要如此,以确保镜头快速拉到指定位置
- 盒子 canvas layer
- 一些 npc、player 大运行脚本会被中断。如果想让它们仍旧运行,需设置为 pausable。
@ -121,4 +122,4 @@ current_scene 是通过 GroundLoader 加载的,在 ground loader 加载 ground
- Vibe Sfx & Manager
- 转场 process 机制优化:暂停 & sfx 等保持运行
- EventManager 控制事件,使用 Event2D 控制绑定关系
- Vibe Control 控制氛围情绪音乐
- Vibe Control 控制氛围情绪音乐

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

View File

@ -1,14 +0,0 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://c3oae6jev21ss"
path="res://.godot/imported/bg_黄包车场景.gif-b3bafcec52ae3dc0cd3daca940f2af37.tres"
[deps]
source_file="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景.gif"
dest_files=["res://.godot/imported/bg_黄包车场景.gif-b3bafcec52ae3dc0cd3daca940f2af37.tres"]
[params]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cd2aubqxylfec"
path="res://.godot/imported/0.png-fe8567d5fb6b28abdb097873aacc6300.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/0.png"
dest_files=["res://.godot/imported/0.png-fe8567d5fb6b28abdb097873aacc6300.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://tnh367i7wurh"
path="res://.godot/imported/1.png-58437f4c4bc9eff6a08430225140bc92.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/1.png"
dest_files=["res://.godot/imported/1.png-58437f4c4bc9eff6a08430225140bc92.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b3pj2b4rd7fao"
path="res://.godot/imported/2.png-4d1299c7eddc6871ccc7744b426445d5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/2.png"
dest_files=["res://.godot/imported/2.png-4d1299c7eddc6871ccc7744b426445d5.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cv55r7wb6s7q2"
path="res://.godot/imported/3.png-195256a2c706d8603deac903af01f08b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/3.png"
dest_files=["res://.godot/imported/3.png-195256a2c706d8603deac903af01f08b.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dg272p7innucm"
path="res://.godot/imported/4.png-4c1bf4f3f667386ce7d07f206f55dc30.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/4.png"
dest_files=["res://.godot/imported/4.png-4c1bf4f3f667386ce7d07f206f55dc30.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://chtp0t3sdxr6e"
path="res://.godot/imported/5.png-c3c37de6dda944f183148bc0b41ea915.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/5.png"
dest_files=["res://.godot/imported/5.png-c3c37de6dda944f183148bc0b41ea915.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,20 +1,14 @@
[gd_resource type="SpriteFrames" load_steps=20 format=3 uid="uid://bk54qlc8dr5xr"]
[gd_resource type="SpriteFrames" load_steps=14 format=3 uid="uid://bk54qlc8dr5xr"]
[ext_resource type="Texture2D" uid="uid://dwkqprb4awfw5" path="res://asset/art/gif/c01_黄包车长场景/车夫静止/0.png" id="1_exyfg"]
[ext_resource type="Texture2D" uid="uid://dwh33fnaqolr1" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/0.png" id="1_hwn5u"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/0.png" id="1_ka1dc"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/1.png" id="2_4vcl7"]
[ext_resource type="Texture2D" uid="uid://dmxk7x3qegy7c" path="res://asset/art/gif/c01_黄包车长场景/车夫静止/1.png" id="2_lg17s"]
[ext_resource type="Texture2D" uid="uid://bj76aekhlpj5y" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/1.png" id="2_x7lcf"]
[ext_resource type="Texture2D" uid="uid://bcgr52ujra83i" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/2.png" id="3_dvtyl"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/2.png" id="3_jd8rc"]
[ext_resource type="Texture2D" uid="uid://bc00sgcol564b" path="res://asset/art/gif/c01_黄包车长场景/车夫静止/2.png" id="3_ocrpr"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/3.png" id="4_st4l6"]
[ext_resource type="Texture2D" uid="uid://cjljxlfxmejtc" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/3.png" id="4_wnycl"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/4.png" id="5_1f36b"]
[ext_resource type="Texture2D" uid="uid://byl4c70hvddh5" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/4.png" id="5_ycmwg"]
[ext_resource type="Texture2D" uid="uid://cnh7bpvsjtwrh" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/5.png" id="6_d87l8"]
[ext_resource type="Texture2D" path="res://asset/art/gif/c01_黄包车长场景/bg_黄包车场景/5.png" id="6_f486j"]
[ext_resource type="Texture2D" uid="uid://ipubgslb4rxc" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/6.png" id="7_v11xq"]
[ext_resource type="Texture2D" uid="uid://pfxlpl3sw276" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/7.png" id="8_fqgat"]
[ext_resource type="Texture2D" uid="uid://r1yd4s1ks2ws" path="res://asset/art/gif/c01_黄包车长场景/车夫跑/8.png" id="9_hqp0d"]
@ -23,29 +17,6 @@
[resource]
animations = [{
"frames": [{
"duration": 15.0,
"texture": ExtResource("1_ka1dc")
}, {
"duration": 15.0,
"texture": ExtResource("2_4vcl7")
}, {
"duration": 15.0,
"texture": ExtResource("3_jd8rc")
}, {
"duration": 15.0,
"texture": ExtResource("4_st4l6")
}, {
"duration": 15.0,
"texture": ExtResource("5_1f36b")
}, {
"duration": 15.0,
"texture": ExtResource("6_f486j")
}],
"loop": true,
"name": &"bg_黄包车场景",
"speed": 30.0
}, {
"frames": [{
"duration": 2.4,
"texture": ExtResource("1_hwn5u")
}, {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c7m10rk4cw3lf"
path="res://.godot/imported/bg_夜晚黄包车场景.jpg-63d9ff77177682efbd12e4b154e85d56.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c01/s09_黄包车长场景/bg_夜晚黄包车场景.jpg"
dest_files=["res://.godot/imported/bg_夜晚黄包车场景.jpg-63d9ff77177682efbd12e4b154e85d56.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

View File

@ -2,7 +2,7 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c8ttv5ahqnmgl"
uid="uid://c4plbyesc73k2"
path="res://.godot/imported/bg_夜晚黄包车场景.png-48e5ff551c795b791c5189af91f39718.ctex"
metadata={
"vram_texture": false

View File

@ -1,14 +0,0 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://b7k204xisxqku"
path="res://.godot/imported/bg_黄包车场景.gif-22db533529a15c909c9e636029d49d53.tres"
[deps]
source_file="res://asset/art/scene/c01/s09_黄包车长场景/bg_黄包车场景.gif"
dest_files=["res://.godot/imported/bg_黄包车场景.gif-22db533529a15c909c9e636029d49d53.tres"]
[params]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

View File

@ -1,14 +0,0 @@
[remap]
importer="gif.animated.texture.plugin"
type="SpriteFrames"
uid="uid://bj16ob5u8h50h"
path="res://.godot/imported/黄包车场景参考.gif-5b30179df1deae551be07565482459ea.tres"
[deps]
source_file="res://asset/art/scene/c01/s09_黄包车长场景/黄包车场景参考.gif"
dest_files=["res://.godot/imported/黄包车场景参考.gif-5b30179df1deae551be07565482459ea.tres"]
[params]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dbwbysuysf4j3"
path="res://.godot/imported/e_小蝶脸部.png-068e69571d86e39bbcf896dcfff30703.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c02/结尾演出小蝶分镜特写/e_小蝶脸部.png"
dest_files=["res://.godot/imported/e_小蝶脸部.png-068e69571d86e39bbcf896dcfff30703.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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cu8fmsao4tp23"
path="res://.godot/imported/示例_小蝶分镜特写.jpg-44459710f9a2bc2452dfcdc117af0b3b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://asset/art/scene/c02/结尾演出小蝶分镜特写/示例_小蝶分镜特写.jpg"
dest_files=["res://.godot/imported/示例_小蝶分镜特写.jpg-44459710f9a2bc2452dfcdc117af0b3b.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,4 +1,4 @@
keys,zh_CN,zh_SH,_character,_notes,zh_SH
keys,zh_CN,zh_SH,_character,_notes,_tags
c02_11肉铺敲门_1,理发二楼,看病三楼!,剃头两楼,看毛病三楼!,,,
c02_11肉铺敲门_2,敲什么敲!,,,,
c02_11肉铺敲门_3,不做生意赶紧滚!,不做生意奥扫滚!,,,
@ -12,8 +12,8 @@ c02_纸人互动_离开公寓3,留下,,(response),,
c02_钻入隧道询问1,是否钻入隧道?,,,,
c02_钻入隧道询问2,进入,,(response),,
c02_6偷听对话_李氏_1_fx,真的假的?你钻进去啦,你这个体型进得去哒?,真的假的?侬钻进去啦,侬这模子钻得进去哒?,李兰,,
c02_6偷听对话_癞子_1_fx,小声点,让人听见了倒惹麻烦。,声音小点,被人家听到就讨厌了。,王守义,,[#db=3]
c02_6偷听对话_李氏_2_fx,那你说说,都看到什么啦?,个么侬讲讲看呀,都看到啥东西了啦?,李兰,,[#db=-5]
c02_6偷听对话_癞子_1_fx,小声点,让人听见了倒惹麻烦。,声音小点,被人家听到就讨厌了。,王守义,,
c02_6偷听对话_李氏_2_fx,那你说说,都看到什么啦?,个么侬讲讲看呀,都看到啥东西了啦?,李兰,,
c02_6偷听对话_癞子_2_fx,不好说,那里头弯弯绕绕的,我得找个时间再去看一眼。,讲不清楚,里厢绕来绕去的,我下趟有机会再去看看较。,王守义,,
c02_6偷听对话_癞子_3_fx,对了,你改天撺个局,让方启钊和胖子一块来搓麻,我顺嘴问一道。,对了,过两天侬喊瞎子和胖子过来一道搓场麻将,我再问一问。,王守义,,
c02_6偷听对话_癞子_4_fx,其余的,不要声张。,其他的我们也覅多响。,王守义,,
@ -73,4 +73,3 @@ c02_10小蝶_4,你...是怎么死的?,侬……是怎么死的?,吕萍,,[#ba
c02_10瞎子_1,小蝉,该回家了。,小蝉,好回去了。,方启钊,,
c02_10瞎子_2,你胖叔叔带了鲜肉过来,要给咱们露一手呢。,胖阿叔拿了肉肉过来,要帮侬烧好吃的。,方启钊,,
c02_10瞎子_3,还不快点过来谢谢人家?,还不快点过来谢谢阿叔?,方启钊,,
,,
Can't render this file because it has a wrong number of fields in line 76.

View File

@ -6,10 +6,10 @@ uid="uid://c3t4gt42ce5ep"
[deps]
files=["res://asset/dialogue/c02.zh_CN.translation", "res://asset/dialogue/c02.zh_SH.translation", "res://asset/dialogue/c02.zh_SH.translation"]
files=["res://asset/dialogue/c02.zh_CN.translation", "res://asset/dialogue/c02.zh_SH.translation"]
source_file="res://asset/dialogue/c02.csv"
dest_files=["res://asset/dialogue/c02.zh_CN.translation", "res://asset/dialogue/c02.zh_SH.translation", "res://asset/dialogue/c02.zh_SH.translation"]
dest_files=["res://asset/dialogue/c02.zh_CN.translation", "res://asset/dialogue/c02.zh_SH.translation"]
[params]

View File

@ -16,7 +16,7 @@
#[#anonymous]
李兰: 真的假的?你钻进去啦,你这个体型进得去哒? [ID:c02_6偷听对话_李氏_1_fx]
王守义: 小声点,让人听见了倒惹麻烦。 [ID:c02_6偷听对话_癞子_1_fx]
李兰: 那你说说,都看到什么啦? [ID:c02_6偷听对话_李氏_2_fx]
李兰: 那你说说,都看到什么啦? [ID:c02_6偷听对话_李氏_2_fx]
王守义: 不好说,那里头弯弯绕绕的,我得找个时间再去看一眼。 [ID:c02_6偷听对话_癞子_2_fx]
王守义: 对了,你改天撺个局,让方启钊和胖子一块来搓麻,我顺嘴问一道。 [ID:c02_6偷听对话_癞子_3_fx]
王守义: 其余的,不要声张。 [ID:c02_6偷听对话_癞子_4_fx]
@ -28,7 +28,7 @@
李兰: (叹气)这碗里连点油水也没有,前年的衣裳能装下两个我。 [ID:c02_6偷听对话_李氏_6_fx]
李兰: 想当年,咱们好歹也过了几年体面日子。 [ID:c02_6偷听对话_李氏_7_fx]
王守义: 等胖子那肉铺开门,你趁晚上摸黑去,一句话也别说,敲六下门,三快三慢。 [ID:c02_6偷听对话_癞子_7_fx]
李兰: 我记着了。 [ID:c02_6偷听对话_李氏_8_fx]
李兰: 我记着了。 [#wait=2] [ID:c02_6偷听对话_李氏_8_fx]
李兰: ...谁在外面?! [ID:c02_6偷听对话_李氏_9_fx]
=> END
@ -118,9 +118,9 @@
~ c02_尾声霸凌童谣
: 下雨了、打烊了、小脚小孩跳舞了 [ID:c02_尾声霸凌童谣1]
: 摔倒了、哭鼻头、小脚上面出血了 [ID:c02_尾声霸凌童谣2]
: 哭鼻头、哭鼻头~小脚小孩哭鼻头... [ID:c02_尾声霸凌童谣3]
: 下雨了、打烊了、小脚小孩跳舞了 [#wait=4.7] [ID:c02_尾声霸凌童谣1]
: 摔倒了、哭鼻头、小脚上面出血了 [#wait=3.8] [ID:c02_尾声霸凌童谣2]
: 哭鼻头、哭鼻头~小脚小孩哭鼻头... [#wait=6] [ID:c02_尾声霸凌童谣3]
=> END
~ c02_未完成拯救小蝉的游戏
@ -135,15 +135,15 @@
~ c02_s11_谢幕交谈1
吕萍: 小姑娘,你是不是认得我啊? [ID:c02_10小蝶_1]
方小蝉: 嗯。 [ID:c02_10小蝉_1]
吕萍: 我能感觉到,从我一进来,你就在盯着我。 [ID:c02_10小蝶_2]
方小蝉: ...你不记得我了。 [ID:c02_10小蝉_2]
吕萍: ...我更好奇另一件事。 [ID:c02_10小蝶_3]
吕萍: 小姑娘,你是不是认得我啊? [#ban_skip] [ID:c02_10小蝶_1]
方小蝉: 嗯。 [#ban_skip] [ID:c02_10小蝉_1]
吕萍: 我能感觉到,从我一进来,你就在盯着我。 [#ban_skip] [ID:c02_10小蝶_2]
方小蝉: ...你不记得我了。 [#ban_skip] [ID:c02_10小蝉_2]
吕萍: ...我更好奇另一件事。 [#ban_skip] [ID:c02_10小蝶_3]
=> END
~ c02_s11_谢幕交谈2
吕萍: 你...是怎么死的? [ID:c02_10小蝶_4]
吕萍: 你...是怎么死的? [#ban_skip] [ID:c02_10小蝶_4]
=> END
#第一次和疯子见面,小心翼翼询问

View File

@ -47,6 +47,7 @@ ui_intro_press_e,按 E 可与场景互动,,,,,
ui_press_e,按 E 可互动,,,,,Press E to interact
ui_press_q_to_exit,按 Q 可退出,,,,,
ui_use_prop,按 E 使用道具,,,,,Press E to use prop
ui_check_note,按 N 查看线索笔记,,,,,
ui_right_click_prop,右键点击可检阅道具,,,,,
ui_left_mouse_shave,按住鼠标拖拽可刮开海报,,,,,
ui_important_item_update,重要物品已更新(按 B 打开背包),,,,,
@ -161,7 +162,7 @@ c02_s03_干掉的血迹,血迹看上去干了很久,血脚印有大有小,
c02_院子_算命摊位,算命的摊位?,,,,,
c02_院子_要下雨,好像要下雨了?,,,,,
c02_s03_掉鞋子,怎么天上掉了个小鞋子下来?,,,,,
c02_s03_铁门,通往后院的铁门,锁住了,,,,,
c02_s03_铁门,锁住了,,,,,
c02_保卫科花名册os,芦昌公寓居民登记簿,黄国栋记。,,,,,
c02_保卫科祭台os,祭台是专门供奉这只大老鼠的?,,,,,
c02_小手出现摔倒,,,,,,

1 keys zh_CN _character _notes _tags zh_SH en
47 ui_press_e 按 E 可互动 Press E to interact
48 ui_press_q_to_exit 按 Q 可退出
49 ui_use_prop 按 E 使用道具 Press E to use prop
50 ui_check_note 按 N 查看线索笔记
51 ui_right_click_prop 右键点击可检阅道具
52 ui_left_mouse_shave 按住鼠标拖拽可刮开海报
53 ui_important_item_update 重要物品已更新(按 B 打开背包)
162 c02_院子_算命摊位 算命的摊位?
163 c02_院子_要下雨 好像要下雨了?
164 c02_s03_掉鞋子 怎么天上掉了个小鞋子下来?
165 c02_s03_铁门 通往后院的铁门,锁住了 锁住了
166 c02_保卫科花名册os 芦昌公寓居民登记簿,黄国栋记。
167 c02_保卫科祭台os 祭台是专门供奉这只大老鼠的?
168 c02_小手出现摔倒 ?!

View File

@ -34,6 +34,7 @@
按 E 可互动 [ID:ui_press_e]
按 Q 可退出 [ID:ui_press_q_to_exit]
按 E 使用道具 [ID:ui_use_prop]
按 N 查看线索笔记 [ID:ui_check_note]
右键点击可检阅道具 [ID:ui_right_click_prop]
按住鼠标拖拽可刮开海报 [ID:ui_left_mouse_shave]
重要物品已更新(按 B 打开背包) [ID:ui_important_item_update]

View File

@ -9,7 +9,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../xiandie.exe"
export_path="../衔蝶.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
@ -26,7 +26,7 @@ debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
binary_format/architecture="x86_32"
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""

View File

@ -3,7 +3,7 @@ extends Node
signal archive_loaded
static var archive: AssembledArchive:
var archive: AssembledArchive:
set(val):
archive = val
if archive:

View File

@ -1,7 +1,7 @@
class_name GlobalConfig extends Resource
const DEBUG = true
#const DEBUG = false
#const DEBUG = true
static var DEBUG = false
# .res would be binary encoded, .tres is text encoded
const RES_FILE_FORMAT = ".tres"
@ -13,6 +13,7 @@ const CANVAS_LAYER_SETTINGS = 30
const CANVAS_LAYER_NOTE = 25
# dialog
const CANVAS_LAYER_DIALOG = 24
const CANVAS_LAYER_MEM_ITEM = 23
const CANVAS_LAYER_UX_PANEL = 22
# main 场景的 UI 层prop hud、上下mask、notification
const CANVAS_LAYER_UI = 21

View File

@ -22,7 +22,9 @@ func set_stage(event_name: StringName, stage := 1) -> void:
stage_updated.emit(event_name, stage)
# 如果是 handnote_stage玩家进行记笔记动作
if event_name == "handnote_stage" and SceneManager.get_player().character.begins_with("吕萍"):
SceneManager.freeze_player(1.0, 16, true)
SceneManager.lock_player(3.0, 16, true)
if stage == 1:
SceneManager.pop_center_notification(tr("ui_check_note"))
# 仅在设置的 stage > 当前 stage 时更新,相等或小于时不更新

View File

@ -24,7 +24,7 @@ func c02_cat_play_with_door():
knocking = true
var knock_stream = preload("uid://6q5qi1qon35r")
AudioManager.play_sfx(knock_stream)
SceneManager.freeze_player(1.5, 6, true)
SceneManager.lock_player(1.5, 6, true)
await get_tree().create_timer(1.5).timeout
knocking = false

View File

@ -66,7 +66,6 @@ func _ready() -> void:
light.enabled = enable_light
os_contaner.modulate.a = 0.0
_check_character_runtime_status()
_play_animation()
if not Engine.is_editor_hint():
footstep_timer.timeout.connect(_on_footstep_timer_timeout)
footstep_timer.stop()
@ -108,6 +107,7 @@ func _check_character_runtime_status():
running_locked = ArchiveManager.archive.player_running_locked
# 每个角色有对应 inverntory
SceneManager.checkout_prop_inventory(character)
_play_animation()
func _on_footstep_timer_timeout():

View File

@ -22,19 +22,16 @@ signal hold_changed(count: int, is_add: bool)
var _freeze_requests: int = 0
var _hold_requests: int = 0
# 调试模式
var debug_mode := GlobalConfig.DEBUG
func _exit_tree() -> void:
if _freeze_requests > 0:
if debug_mode:
if GlobalConfig.DEBUG:
push_warning(
"[ReenterLock] Remains %d freeze requests on exit_tree. parent=" % _freeze_requests,
get_parent()
)
if _hold_requests > 0:
if debug_mode:
if GlobalConfig.DEBUG:
print(
"[ReenterLock] Remains %d hold requests on exit_tree. parent=" % _hold_requests,
get_parent()
@ -51,7 +48,7 @@ func freeze(duration := 0.0) -> void:
if duration > 0:
_create_timer(duration, release)
_freeze_requests += 1
if debug_mode:
if GlobalConfig.DEBUG:
print("[ReenterLock] Freeze applied: ", _freeze_requests)
freeze_changed.emit(_freeze_requests, true)
@ -66,7 +63,7 @@ func release() -> void:
)
return
_freeze_requests -= 1
if debug_mode:
if GlobalConfig.DEBUG:
print("[ReenterLock] Release applied: ", _freeze_requests)
freeze_changed.emit(_freeze_requests, false)
@ -76,7 +73,7 @@ func hold(duration := 0.0) -> void:
if duration > 0:
_create_timer(duration, unhold)
_hold_requests += 1
if debug_mode:
if GlobalConfig.DEBUG:
print("[ReenterLock] Hold applied: ", _hold_requests)
hold_changed.emit(_hold_requests, true)
@ -91,7 +88,7 @@ func unhold() -> void:
)
return
_hold_requests -= 1
if debug_mode:
if GlobalConfig.DEBUG:
print("[ReenterLock] Unhold applied: ", _hold_requests)
hold_changed.emit(_hold_requests, false)
@ -119,7 +116,7 @@ func lock_all(duration := 0.0) -> void:
_create_timer(duration, unlock_all)
_hold_requests += 1
_freeze_requests += 1
if debug_mode:
if GlobalConfig.DEBUG:
prints("[ReenterLock] LockAll applied (hold, freeze): ", _hold_requests, _freeze_requests)
hold_changed.emit(_hold_requests, true)
freeze_changed.emit(_freeze_requests, true)

View File

@ -45,6 +45,8 @@ func _on_finished() -> void:
if loop_round_time <= 0:
timer.stop()
play()
else:
timer.start(loop_round_time)
# queue free 导致 sfx 无法播放,使用全局声源

View File

@ -60,9 +60,10 @@ var restarting = false
func _enter_tree() -> void:
# 仅在编辑器中调试时,通过 main 场景启动
if GlobalConfig.DEBUG and (not Engine.is_editor_hint()) and (not get_parent() is GroundLoader):
print("restarting...")
if not Engine.is_editor_hint() and (not get_parent() is GroundLoader):
print("restarting... set GlobalConfig.DEBUG = true")
restarting = true
GlobalConfig.DEBUG = true
_restart_from_main()
return
if camera_focus_marker:

View File

@ -61,7 +61,7 @@ func _on_luren_animation_finished() -> void:
luren.get_node("Sfx2D").stop()
# luren.offset = Vector2(-9.5, -0.5)
luren.offset = Vector2(-19, -1)
$"../DeployLayer/其余小孩/Npc吉祥话4".enabled = true
$"../DeployLayer/陆仁舞刀/Npc吉祥话4".enabled = true
func _knock_door():
@ -97,4 +97,3 @@ func seller_interacted():
# 播放获得动画
SceneManager.enable_prop_item("prop_信碎片2")
SceneManager.release_player()

View File

@ -184,7 +184,7 @@ frame_progress = 0.252889
height = -20.0
[node name="陆仁舞刀" parent="Ground/DeployLayer" index="6" instance=ExtResource("9_slaub")]
position = Vector2(970, 4)
position = Vector2(1045, 6)
sprite_frames = ExtResource("6_thm8f")
animation = &"陆仁舞刀-黄昏带红缨"
autoplay = "陆仁舞刀-黄昏带红缨"
@ -206,6 +206,11 @@ script = ExtResource("19_sqlmr")
loop = true
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="Npc吉祥话4" parent="Ground/DeployLayer/陆仁舞刀" instance=ExtResource("6_fw22n")]
position = Vector2(-15, 58)
enabled = false
dialogue_title = "c01_s07_陆仁吉祥话"
[node name="其余小孩" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="7"]
position = Vector2(1160, 7)
sprite_frames = ExtResource("6_thm8f")
@ -213,7 +218,7 @@ animation = &"杂戏团黄昏-其余小孩"
autoplay = "杂戏团黄昏-其余小孩"
[node name="Ambush监督小孩" parent="Ground/DeployLayer/其余小孩" instance=ExtResource("9_f61dl")]
position = Vector2(-255, 63)
position = Vector2(-688, 53)
freeze_time = 0.1
lock_player_on_playing_dialogue = false
hook_dialogue_title = "c01_s07_监督小孩吉祥话"
@ -231,11 +236,6 @@ dialogue_title = "c01_s07_小孩吉祥话2"
position = Vector2(80, 59)
dialogue_title = "c01_s07_小孩吉祥话3"
[node name="Npc吉祥话4" parent="Ground/DeployLayer/其余小孩" instance=ExtResource("6_fw22n")]
position = Vector2(-205, 55)
enabled = false
dialogue_title = "c01_s07_陆仁吉祥话"
[node name="举碗小孩" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="8"]
position = Vector2(1297, 7)
sprite_frames = ExtResource("6_thm8f")

View File

@ -12,7 +12,7 @@
[ext_resource type="AudioStream" uid="uid://b8rg7adnnkjll" path="res://asset/audio/BGM/戏曲声.wav" id="6_68ynl"]
[ext_resource type="SpriteFrames" uid="uid://bk54qlc8dr5xr" path="res://asset/art/gif/c01_黄包车长场景/c01_黄包车长场景_frames.tres" id="7_wo6md"]
[ext_resource type="AudioStream" uid="uid://bi6gm533oqsa" path="res://asset/audio/BGM/街道背景音.wav" id="7_yajus"]
[ext_resource type="Texture2D" uid="uid://c7m10rk4cw3lf" path="res://asset/art/scene/c01/s09_黄包车长场景/bg_夜晚黄包车场景.jpg" id="8_yajus"]
[ext_resource type="Texture2D" uid="uid://c4plbyesc73k2" path="res://asset/art/scene/c01/s09_黄包车长场景/bg_夜晚黄包车场景.png" id="8_yajus"]
[ext_resource type="Script" uid="uid://dvmw38syi54l3" path="res://scene/ground/script/c01/s11_路灯序列.gd" id="9_6p5hp"]
[ext_resource type="Texture2D" uid="uid://cg1ey0l55acvs" path="res://asset/art/scene/c01/s09_黄包车长场景/e_单个路灯.png" id="9_u6881"]
[ext_resource type="Texture2D" uid="uid://cgsq1im2q63f8" path="res://asset/art/scene/c01/s09_黄包车长场景/e_路灯灯芯.png" id="11_2w2ir"]
@ -185,16 +185,7 @@ metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="BGSprite2D" parent="Ground" index="2"]
position = Vector2(-12, 2)
texture = ExtResource("8_yajus")
offset = Vector2(-4, -627)
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Ground/BGSprite2D" index="0"]
visible = false
position = Vector2(-4, -5)
sprite_frames = ExtResource("7_wo6md")
animation = &"bg_黄包车场景"
autoplay = "bg_黄包车场景"
centered = false
offset = Vector2(0, -646)
offset = Vector2(-4, -628)
[node name="portal_left" parent="Ground/DeployLayer" index="0"]
position = Vector2(95, 40)
@ -217,9 +208,10 @@ shape = SubResource("RectangleShape2D_b0oon")
[node name="小孩捡球" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="3"]
modulate = Color(0, 0, 0, 1)
z_index = 4
position = Vector2(460, 69)
sprite_frames = ExtResource("3_hnnuc")
animation = &"c01_捡球男孩_关键帧"
animation = &"c00_吕萍_记笔记_right"
[node name="ambush_title1" parent="Ground/DeployLayer" index="4" instance=ExtResource("6_3k8jj")]
position = Vector2(1365, 4)
@ -259,7 +251,7 @@ one_shot = false
hook_method = "dialog4"
[node name="路灯序列1" type="Node2D" parent="Ground/AmbientLayer" index="0"]
position = Vector2(405, 10)
position = Vector2(405, 17)
script = ExtResource("9_6p5hp")
[node name="路灯" type="Sprite2D" parent="Ground/AmbientLayer/路灯序列1"]
@ -331,7 +323,7 @@ position = Vector2(-59, 48)
shape = SubResource("RectangleShape2D_jd8t2")
[node name="路灯序列2" type="Node2D" parent="Ground/AmbientLayer" index="1"]
position = Vector2(7950, -19)
position = Vector2(7950, 9)
script = ExtResource("9_6p5hp")
total_distance = 3000.0

View File

@ -171,7 +171,7 @@ z_index = 6
position = Vector2(1021, -48)
[node name="陆仁舞刀" parent="Ground/DeployLayer" index="7" instance=ExtResource("14_ct084")]
position = Vector2(1748, 10)
position = Vector2(1748, 6)
sprite_frames = ExtResource("13_lucm6")
animation = &"陆仁擦刀"
autoplay = "陆仁擦刀"
@ -183,7 +183,7 @@ action_configs = Array[Dictionary]([{
}])
[node name="其余小孩" parent="Ground/DeployLayer" index="8" instance=ExtResource("14_ct084")]
position = Vector2(1911, 16)
position = Vector2(1911, 12)
sprite_frames = ExtResource("14_7jjl5")
animation = &"夜晚其余小孩杂耍"
autoplay = "夜晚其余小孩杂耍"
@ -195,7 +195,7 @@ action_configs = Array[Dictionary]([{
}])
[node name="举腿小孩" parent="Ground/DeployLayer" index="9" instance=ExtResource("14_ct084")]
position = Vector2(1822, 10)
position = Vector2(1822, 6)
sprite_frames = ExtResource("14_7jjl5")
animation = &"夜晚举腿小孩杂耍"
autoplay = "夜晚举腿小孩杂耍"
@ -207,7 +207,7 @@ action_configs = Array[Dictionary]([{
}])
[node name="举碗小孩" parent="Ground/DeployLayer" index="10" instance=ExtResource("14_ct084")]
position = Vector2(1792, 13)
position = Vector2(1792, 9)
sprite_frames = ExtResource("13_lucm6")
animation = &"杂戏团夜晚_小孩举碗呼吸"
autoplay = "杂戏团夜晚_小孩举碗呼吸"

View File

@ -812,22 +812,22 @@ stream_1/stream = ExtResource("30_r7b2r")
stream_2/stream = ExtResource("31_rpn6g")
[sub_resource type="Gradient" id="Gradient_lh55k"]
offsets = PackedFloat32Array(0, 0.678218, 0.977723)
offsets = PackedFloat32Array(0, 0.6375, 0.977723)
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_cvjw7"]
[sub_resource type="GradientTexture2D" id="GradientTexture2D_4ndyv"]
gradient = SubResource("Gradient_lh55k")
width = 180
height = 220
fill = 1
fill_from = Vector2(0.496201, 0.397436)
fill_from = Vector2(0.493067, 0.446154)
fill_to = Vector2(1, 1)
[sub_resource type="Gradient" id="Gradient_och2w"]
offsets = PackedFloat32Array(0, 0.643564, 1)
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_p6da7"]
[sub_resource type="GradientTexture2D" id="GradientTexture2D_h3h1a"]
gradient = SubResource("Gradient_och2w")
width = 30
height = 30
@ -1007,7 +1007,7 @@ position = Vector2(5, 28)
stream = SubResource("AudioStreamRandomizer_wywax")
volume_db = 10.0
max_distance = 600.0
attenuation = 3.0
attenuation = 2.0
bus = &"game_sfx"
script = ExtResource("14_7x2h6")
loop = true
@ -1142,13 +1142,13 @@ visible = false
position = Vector2(627, 29)
color = Color(0.982183, 0.783422, 0.692686, 1)
energy = 0.0
texture = SubResource("GradientTexture2D_cvjw7")
texture = SubResource("GradientTexture2D_4ndyv")
[node name="L火柴光" type="PointLight2D" parent="Ground/DeployLayer/c02_final/L环境光"]
position = Vector2(0, -5)
color = Color(0.895506, 0.638359, 0.208885, 1)
energy = 0.0
texture = SubResource("GradientTexture2D_p6da7")
texture = SubResource("GradientTexture2D_h3h1a")
[node name="Ambush小蝉偷看" parent="Ground/DeployLayer" index="18" instance=ExtResource("14_k01ve")]
position = Vector2(553, -5)
@ -1170,7 +1170,6 @@ texture = ExtResource("5_26mqt")
points = PackedVector2Array(26, 150, 900, 150)
[node name="DirectionalLight2D" parent="Ground" index="8"]
visible = false
energy = 0.9
blend_mode = 1

View File

@ -47,6 +47,7 @@ status = "opened"
position = Vector2(465, 21)
[node name="小猫初始动画" type="AnimatedSprite2D" parent="Ground/DeployLayer" index="2"]
process_mode = 1
position = Vector2(211, 3)
sprite_frames = ExtResource("5_ycgng")
animation = &"猫钻进盒子"

View File

@ -23,7 +23,7 @@ func knock_light_door():
# 一直循环下去
for _i in range(100):
AudioManager.play_sfx(knock_stream)
SceneManager.freeze_player(0, 6)
SceneManager.lock_player(0, 6)
await get_tree().create_timer(0.5).timeout
# 被抓时打断
if not player.visible or player.hide_sprite:

View File

@ -50,6 +50,7 @@ func _ready() -> void:
func _on_visibility_changed() -> void:
if visible and is_node_ready() and not Engine.is_editor_hint():
_init_mice()
sfx.play()
func _enter_tree() -> void:

View File

@ -29,6 +29,7 @@ scale = Vector2(0.86, 0.86)
texture = SubResource("AtlasTexture_5gnxj")
[node name="Sfx2D老鼠叫" type="AudioStreamPlayer2D" parent="mouse1"]
process_mode = 1
position = Vector2(-141.302, -5.86671)
scale = Vector2(1.16279, 1.16279)
stream = ExtResource("3_otpwt")
@ -36,7 +37,6 @@ max_distance = 1000.0
bus = &"game_sfx"
script = ExtResource("4_otpwt")
loop = true
loop_round_time = 20.0
metadata/_custom_type_script = "uid://wapo47a1oddf"
[node name="mouse2" type="Sprite2D" parent="."]

View File

@ -13,16 +13,19 @@
[ext_resource type="Texture2D" uid="uid://dx3i8mchgux1d" path="res://asset/art/scene/c02/s12_to_s17_盒子猫/ux_纸张.png" id="6_rxlkc"]
[node name="盒子猫CanvasLayer" type="CanvasLayer"]
process_mode = 1
layer = 0
script = ExtResource("1_ygosu")
[node name="Sfx翻身躲藏" type="AudioStreamPlayer" parent="."]
process_mode = 1
stream = ExtResource("2_8mjri")
bus = &"game_sfx"
script = ExtResource("3_3ukbg")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx退出躲藏" type="AudioStreamPlayer" parent="."]
process_mode = 1
stream = ExtResource("4_0rwiy")
bus = &"game_sfx"
script = ExtResource("3_3ukbg")

View File

@ -24,15 +24,15 @@ var balls_scene_dict = {
func _ready() -> void:
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
# hand_pivot.modulate.a = 0
# # 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
# if ArchiveManager.get_global_value(&"c02_ball_game_stage", 0) == 2:
# # checkout_round(2)
# checkout_round(0)
# else:
# intro()
# label.modulate.a = 0
game_win()
hand_pivot.modulate.a = 0
# 0:默认 1:寻找弹珠(老虎钳可以换弹珠) 2:给出弹珠 3:游戏结束
if ArchiveManager.get_global_value(&"c02_ball_game_stage", 0) == 2:
# checkout_round(2)
checkout_round(0)
else:
intro()
label.modulate.a = 0
#game_win()
func intro():

View File

@ -24,7 +24,7 @@ extends Container
func _ready() -> void:
display_layer.layer = GlobalConfig.CANVAS_LAYER_UX_PANEL
display_layer.layer = GlobalConfig.CANVAS_LAYER_MEM_ITEM
title_label.text = title
_reload_scene()
scene_btn.mouse_entered.connect(_on_toggle_hover.bind(true))

View File

@ -40,7 +40,7 @@ size_flags_horizontal = 4
[node name="DisplayLayer" type="CanvasLayer" parent="VBox"]
unique_name_in_owner = true
layer = 23
layer = 22
[node name="ControlMask" type="TextureRect" parent="VBox/DisplayLayer"]
unique_name_in_owner = true