settings locale 功能:lang + caption

This commit is contained in:
cakipaul 2025-06-28 02:41:37 +08:00
parent 67d5722b2f
commit ab2c6933e1
15 changed files with 222 additions and 156 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -11,9 +11,14 @@ c02_小蝉寻人启事_脸部破碎,寻人启事...画像和字迹都看不清
setting_画册,画册G,,,,,
notes_干掉的血迹,干掉的血迹,,,,,
c02_瞎子卧室_血脚印,这画上的脚印和刚刚看到的一样。,,,,,
prop_奇怪的肉_说明,,,,,,
bag_tab_日志,笔记,,,,,
ux_panel_退出,退出,,,,,
setting_主界面,回到主界面,,,,,Back to Menu
setting_退出,保存并退出,,,,,Save & Exit
setting_日志,笔记B,,,,,Open the Log
setting_记忆,记忆G,,,,,
setting_全屏游戏,全屏游戏,,,,,Full Screen
setting_窗口置顶,窗口置顶,,,,,Top Window
index_新游戏,新游戏,,,,,New Game
index_继续游戏,继续游戏,,,,,Resume
index_退出游戏,退出游戏,,,,,Exit
@ -25,15 +30,13 @@ ux_panel_退出游戏,退出游戏,,,,,
setting_总音量,总音量,,,,,Main Volume
setting_音效音量,音效音量,,,,,SFX Volume
setting_对话音量,对话音量,,,,,Dialogue Volume
setting_语言,语言,,,,,Language
setting_全屏游戏,全屏游戏,,,,,Full Screen
setting_窗口置顶,窗口置顶,,,,,Top Window
setting_语言,语言(Lang),,,,,Language
setting_字幕,字幕,,,,,
setting_全屏,全屏游戏,,,,,
setting_置顶,窗口置顶,,,,,
setting_自动保存,自动保存,,,,,Auto Save
setting_主界面,回到主界面,,,,,Back to Menu
setting_退出,保存并退出,,,,,Save & Exit
setting_日志,笔记B,,,,,Open the Log
setting_记忆,记忆G,,,,,
ui_秒,秒,,,,,S
setting_返回,返回,,,,,
bag_tab_笔记,线索,,,,,
bag_tab_物品,物件,,,,,
bag_tab_记忆,记忆,,,,,
@ -93,7 +96,8 @@ prop_小鞋子2,小鞋子(二),,,[#texture=c02/小鞋子2.png],,
prop_小鞋子2_说明,尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓,,,,,
prop_麻将,麻将,,,[#texture=c02/麻将.png],,
prop_麻将_说明,这块麻将上雕着一朵圆形的花,,,,,
prop_奇怪的肉,奇怪的肉 这块肉脂肪黄黄的...[ID:prop_奇怪的肉_说明],,,[#texture=c02/奇怪的肉.png],,
prop_奇怪的肉,奇怪的肉,,,[#texture=c02/奇怪的肉.png],,
prop_奇怪的肉_说明,这块肉脂肪黄黄的...,,,,,
prop_弹珠,弹珠,,,[#texture=c02/弹珠.png],,
prop_弹珠_说明,一种玻璃小球,孩子们常用它来进行弹子游戏,,,,,
prop_木头人偶,木头人偶,,,[#texture=c02/小蝉人偶.png],,

1 keys zh_CN _character _notes _tags zh_SH en
11 setting_画册 画册(G)
12 notes_干掉的血迹 干掉的血迹
13 c02_瞎子卧室_血脚印 这画上的脚印和刚刚看到的一样。
prop_奇怪的肉_说明
14 bag_tab_日志 笔记
15 ux_panel_退出 退出
16 setting_主界面 回到主界面 Back to Menu
17 setting_退出 保存并退出 Save & Exit
18 setting_日志 笔记(B) Open the Log
19 setting_记忆 记忆(G)
20 setting_全屏游戏 全屏游戏 Full Screen
21 setting_窗口置顶 窗口置顶 Top Window
22 index_新游戏 新游戏 New Game
23 index_继续游戏 继续游戏 Resume
24 index_退出游戏 退出游戏 Exit
30 setting_总音量 总音量 Main Volume
31 setting_音效音量 音效音量 SFX Volume
32 setting_对话音量 对话音量 Dialogue Volume
33 setting_语言 语言 语言(Lang) Language
34 setting_全屏游戏 setting_字幕 全屏游戏 字幕 Full Screen
35 setting_窗口置顶 setting_全屏 窗口置顶 全屏游戏 Top Window
36 setting_置顶 窗口置顶
37 setting_自动保存 自动保存 Auto Save
setting_主界面 回到主界面 Back to Menu
setting_退出 保存并退出 Save & Exit
setting_日志 笔记(B) Open the Log
setting_记忆 记忆(G)
38 ui_秒 S
39 setting_返回 返回
40 bag_tab_笔记 线索
41 bag_tab_物品 物件
42 bag_tab_记忆 记忆
96 prop_小鞋子2_说明 尺寸极小,为缠足女童所穿弓鞋,尖锐鞋形似翘首鸟头,木质鞋底弯曲如弓
97 prop_麻将 麻将 [#texture=c02/麻将.png]
98 prop_麻将_说明 这块麻将上雕着一朵圆形的花
99 prop_奇怪的肉 奇怪的肉 这块肉脂肪黄黄的...[ID:prop_奇怪的肉_说明] 奇怪的肉 [#texture=c02/奇怪的肉.png]
100 prop_奇怪的肉_说明 这块肉脂肪黄黄的...
101 prop_弹珠 弹珠 [#texture=c02/弹珠.png]
102 prop_弹珠_说明 一种玻璃小球,孩子们常用它来进行弹子游戏
103 prop_木头人偶 木头人偶 [#texture=c02/小蝉人偶.png]

View File

@ -13,13 +13,13 @@
总音量[ID:setting_总音量]
音效音量[ID:setting_音效音量]
对话音量[ID:setting_对话音量]
语言[ID:setting_语言]
全屏游戏[ID:setting_全屏游戏]
窗口置顶[ID:setting_窗口置顶]
语言(Lang)[ID:setting_语言]
字幕[ID:setting_字幕]
全屏游戏[ID:setting_全屏]
窗口置顶[ID:setting_置顶]
自动保存[ID:setting_自动保存]
秒 [ID:ui_秒]
#回到主界面[ID:setting_主界面]
#保存并退出[ID:setting_退出]
返回[ID:setting_返回]
线索[ID:bag_tab_笔记]
@ -96,7 +96,8 @@
麻将 [#texture=c02/麻将.png] [ID:prop_麻将]
这块麻将上雕着一朵圆形的花[ID:prop_麻将_说明]
#新鲜的肉 [#texture=c02/新鲜的肉.png] [ID:prop_新鲜的肉]
奇怪的肉 [#texture=c02/奇怪的肉.png] [ID:prop_奇怪的肉]这块肉脂肪黄黄的...[ID:prop_奇怪的肉_说明]
奇怪的肉 [#texture=c02/奇怪的肉.png] [ID:prop_奇怪的肉]
这块肉脂肪黄黄的...[ID:prop_奇怪的肉_说明]
弹珠 [#texture=c02/弹珠.png] [ID:prop_弹珠]
一种玻璃小球,孩子们常用它来进行弹子游戏[ID:prop_弹珠_说明]
木头人偶 [#texture=c02/小蝉人偶.png] [ID:prop_木头人偶]

View File

@ -1,4 +1,4 @@
[gd_resource type="Theme" load_steps=15 format=3 uid="uid://j42sexotwnvk"]
[gd_resource type="Theme" load_steps=16 format=3 uid="uid://j42sexotwnvk"]
[ext_resource type="Texture2D" uid="uid://cehulj6qro08v" path="res://asset/art/ui/style_box/theme_style_box.png" id="1_7dt84"]
[ext_resource type="FontVariation" uid="uid://1ryw42kej6lv" path="res://config/font_ui.tres" id="1_06688"]
@ -75,6 +75,9 @@ corner_radius_bottom_right = 3
corner_radius_bottom_left = 3
corner_detail = 5
[sub_resource type="StyleBoxLine" id="StyleBoxLine_06688"]
color = Color(0.43134, 0.43134, 0.43134, 1)
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5sc16"]
texture = ExtResource("1_7dt84")
texture_margin_left = 4.0
@ -127,6 +130,7 @@ Button/styles/focus = SubResource("StyleBoxFlat_kajgs")
Button/styles/hover = SubResource("StyleBoxFlat_06688")
Button/styles/normal = SubResource("StyleBoxFlat_ujvfm")
Button/styles/pressed = SubResource("StyleBoxFlat_d5rks")
HSeparator/styles/separator = SubResource("StyleBoxLine_06688")
OptionButton/font_sizes/font_size = 10
PanelContainer/styles/panel = SubResource("StyleBoxTexture_5sc16")
PopupMenu/font_sizes/font_size = 16

View File

@ -31,14 +31,14 @@ class_name AssembledArchive extends Resource
# created time
@export var created_time := "2024-12-24 00:00:00"
# event 发生状态
@export var event_stage := {} as Dictionary[StringName, int]
# 全局参数
@export var global_data_dict := {} as Dictionary[StringName, Variant]
# 不同场景的地面物品状态存档
@export var ground_archives := {} as Dictionary[StringName, GroundArchive]
# # true 为匿名false 非匿名
@export var npc_anonymous_states := {} as Dictionary[StringName, bool]
# event 发生状态
@export var event_stage := {} as Dictionary[StringName, int]
# 玩家跑步锁定状态,默认为 true
@export var player_running_locked := true
# prop hud 显示道具

View File

@ -74,5 +74,7 @@ signal auto_save_seconds_changed
@export var db_dialog := -13.0 # default
@export var db_game_sfx := 3.0 # default
# language
# -1 null; 0 zh_CN; 1 zh_SH; 2 en
# -1 null; 0 zh; 2 en
@export var language := 0
# zh: 0 _SH, 1 _CN; en: [null];
@export var caption := 0

View File

@ -35,6 +35,28 @@ func _set_config(val: GlobalConfig) -> void:
config.db_game_sfx,
config.db_dialog
)
# set locale
update_locale(config.language, config.caption)
func update_locale(lang_id: int, caption_id: int):
# -1 null; 0 zh; 2 en
# var lang_id = language_options.selected
# zh: 0 _SH, 1 _CN; en: [null];
# var caption_id = caption_options.selected
var lang = ""
match lang_id:
0:
if caption_id == 0:
lang = "zh_SH"
elif caption_id == 1:
lang = "zh_CN"
1:
lang = "en"
GlobalConfigManager.config.language = lang_id
GlobalConfigManager.config.caption = caption_id
print("set language to: ", lang)
TranslationServer.set_locale(lang)
func _on_timer_timeout():

View File

@ -54,6 +54,7 @@ func c02_fire_count_down_try_start():
func _on_c02_fire_count_down_timeout():
SceneManager.lock_player(0)
SceneManager.pop_debug_dialog_info("音效", "【重开】霸凌救小蝉倒计时")
c02_fire_count_down_timer.stop()
AudioManager.stop_bgm_music("霸凌救小蝉倒计时")
@ -61,6 +62,7 @@ func _on_c02_fire_count_down_timeout():
await get_tree().create_timer(1.0).timeout
SceneManager.show_black_hand(true, 0.5)
await get_tree().create_timer(3.0).timeout
SceneManager.unlock_player()
SceneManager.get_ground_loader().transition_to_scene("c02_s03", "4")
# TODO 音效
# res://asset/audio/BGM/心跳背景音.mp3

View File

@ -403,10 +403,11 @@ energy = 0.5
texture = ExtResource("11_em2ma")
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/灯笼/灯笼"]
position = Vector2(0, 26)
position = Vector2(0, 56)
color = Color(1, 0.0980392, 0, 1)
energy = 0.7
texture = SubResource("GradientTexture2D_kyfht")
texture_scale = 2.2
[node name="灯笼2" type="Sprite2D" parent="Ground/DeployLayer/灯笼"]
position = Vector2(1166, -94)
@ -418,10 +419,11 @@ energy = 0.5
texture = ExtResource("11_em2ma")
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/灯笼/灯笼2"]
position = Vector2(0, 26)
position = Vector2(0, 49)
color = Color(1, 0.0980392, 0, 1)
energy = 0.7
texture = SubResource("GradientTexture2D_kyfht")
texture_scale = 2.2
[node name="灯笼3" type="Sprite2D" parent="Ground/DeployLayer/灯笼"]
position = Vector2(1764, -86)
@ -433,10 +435,11 @@ energy = 0.5
texture = ExtResource("11_em2ma")
[node name="PointLight2D" type="PointLight2D" parent="Ground/DeployLayer/灯笼/灯笼3"]
position = Vector2(0, 26)
position = Vector2(0, 55)
color = Color(1, 0.0980392, 0, 1)
energy = 0.7
texture = SubResource("GradientTexture2D_kyfht")
texture_scale = 2.2
[node name="新背景_奠" type="Node2D" parent="Ground/DeployLayer" index="10"]
visible = false

View File

@ -54,7 +54,8 @@ func _on_ground_ready() -> void:
boxcat_portal.get_node("Sprite2D").texture = preload("uid://efhwoqtn21d8") # e_墙上纸张_boxcat
else:
$"../DeployLayer/Closeup画".enabled = true
$"../DeployLayer/癞子偷窥/Sfx2D癞子呼吸".play()
if gaslight.interacted_times > 0:
$"../DeployLayer/癞子偷窥/Sfx2D癞子呼吸".play()
if boxcat_played:
$"../DeployLayer/portal_left".status = "opened"
# 玩过小猫游戏,画框内容更新 禁止再进入

View File

@ -6,7 +6,7 @@ signal success
const NON_SELECTED = [-1, -1]
@export var shuffle_times := 20
@export var shuffle_times := 4
@export var debug_relocate := false:
set(value):
debug_relocate = false
@ -86,7 +86,7 @@ func _shuffle_books() -> void:
SceneManager.pop_debug_dialog_info(
"备注", "debug模式每列随机洗牌 1 次,正常模式每列随机洗牌 " + str(shuffle_times) + ""
)
shuffle_times = 1
shuffle_times = 4
suffling = true
rand_from_seed(Time.get_ticks_usec())
for row in range(3):

View File

@ -180,24 +180,28 @@ layer = 5
script = ExtResource("1_8af23")
[node name="Sfx书本掉落" type="AudioStreamPlayer" parent="."]
process_mode = 1
stream = ExtResource("2_c6xiu")
bus = &"game_sfx"
script = ExtResource("3_5brf2")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="Sfx扶正书本" type="AudioStreamPlayer" parent="."]
process_mode = 1
stream = ExtResource("3_o6bsw")
bus = &"game_sfx"
script = ExtResource("3_5brf2")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxInterchange" type="AudioStreamPlayer" parent="."]
process_mode = 1
stream = ExtResource("3_c6xiu")
bus = &"game_sfx"
script = ExtResource("3_5brf2")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="SfxSelect" type="AudioStreamPlayer" parent="."]
process_mode = 1
stream = ExtResource("3_pfav2")
bus = &"game_sfx"
script = ExtResource("3_5brf2")

View File

@ -1,9 +1,9 @@
extends Node2D
@export var locale := "":
set(val):
TranslationServer.set_locale(val)
locale = val
# @export var locale := "":
# set(val):
# TranslationServer.set_locale(val)
# locale = val
func _ready() -> void:

View File

@ -4,12 +4,13 @@ extends CanvasLayer
@onready var sfx_bus_slider = %HSliderSfxBus as HSlider
@onready var dialog_bus_slider = %HSliderDialogBus as HSlider
@onready var language_options = %OptionButtonLanguage as OptionButton
@onready var caption_box = %"字幕" as BoxContainer
@onready var caption_options = %OptionButtonCaption as OptionButton
@onready var autosave_box = %AutoSaveCheckBox as CheckBox
@onready var autosave_time_edit = %SaveTimeLineEdit as LineEdit
@onready var fullscreen_box = %FullscreenBox as CheckBox
@onready var top_box = %TopBox as CheckBox
@onready var index_btn = %IndexBtn as Button
@onready var exit_btn = %ExitBtn as Button
@onready var return_btn = %ReturnBtn as Button
# 音量 DB 偏移
const sfx_db_offset := 6.0
@ -17,6 +18,8 @@ const dialog_db_offset := -10.0
static func _init() -> void:
if not GlobalConfigManager.config:
return
AudioServer.set_bus_volume_db(
AudioServer.get_bus_index("Master"), GlobalConfigManager.config.db_master
)
@ -52,8 +55,12 @@ func _ready():
dialog_bus_slider.value_changed.connect(_on_dialog_bus_slider_value_changed)
# language
language_options.selected = GlobalConfigManager.config.language
_on_language_options_selected(language_options.selected)
language_options.item_selected.connect(_on_language_options_selected)
language_options.item_selected.connect(_on_language_or_caption_options_selected)
# caption
caption_options.selected = GlobalConfigManager.config.caption
caption_options.item_selected.connect(_on_language_or_caption_options_selected)
# setup language
_on_language_or_caption_options_selected()
# auto save
autosave_box.button_pressed = GlobalConfigManager.config.auto_save_enabled
autosave_time_edit.editable = GlobalConfigManager.config.auto_save_enabled
@ -67,12 +74,11 @@ func _ready():
fullscreen_box.toggled.connect(_on_fullscreen_box_toggled)
top_box.toggled.connect(_on_top_box_toggled)
# navigation
exit_btn.pressed.connect(_on_exit_btn_pressed)
index_btn.pressed.connect(_on_index_btn_pressed)
return_btn.pressed.connect(_on_return_btn_pressed)
return_btn.grab_focus()
# open
$"Sfx打开".play()
SceneManager.toggle_pause_counter(true)
index_btn.grab_focus()
func _on_master_bus_slider_value_changed(value: float) -> void:
@ -93,23 +99,16 @@ func _on_dialog_bus_slider_value_changed(value: float) -> void:
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("dialog"), db_value)
func _on_language_options_selected(id: int) -> void:
# -1 null; 0 zh_CN; 1 zh_SH; 2 en
var lang = ""
match id:
0:
lang = "zh_CN"
1:
lang = "zh_SH"
2:
lang = "en"
_:
lang = "zh_CN"
printerr("Unknown language id: ", id)
GlobalConfigManager.config.language = id
if GlobalConfig.DEBUG:
print("set language to: ", lang)
TranslationServer.set_locale(lang)
func _on_language_or_caption_options_selected(_id = null) -> void:
# -1 null; 0 zh; 2 en
var lang_id = language_options.selected
# zh: 0 _CN, _SH; en: [null];
var caption_id = caption_options.selected
if lang_id != 0:
caption_box.hide()
else:
caption_box.show()
GlobalConfigManager.update_locale(lang_id, caption_id)
func _on_autosave_box_toggled(is_pressed: bool) -> void:
@ -139,17 +138,7 @@ func _on_top_box_toggled(is_pressed: bool) -> void:
GlobalConfigManager.config.window_top = is_pressed
func _on_exit_btn_pressed() -> void:
# 从 ArchiveManager 处理退出信号
ArchiveManager.notification(NOTIFICATION_WM_CLOSE_REQUEST)
# 退出游戏过程隐藏 setting 界面
exit_settings()
func _on_index_btn_pressed() -> void:
ArchiveManager.save_all()
SceneManager.checkout_index_page()
# 切换过程隐藏 setting 界面
func _on_return_btn_pressed() -> void:
exit_settings()

View File

@ -1,9 +1,13 @@
[gd_scene load_steps=5 format=3 uid="uid://beok2r6fgburn"]
[gd_scene load_steps=8 format=3 uid="uid://beok2r6fgburn"]
[ext_resource type="Script" uid="uid://ciloxu1k8a1ll" path="res://scene/settings/settings.gd" id="1_7u4nq"]
[ext_resource type="AudioStream" uid="uid://dlt4nv6qjhlpy" path="res://asset/audio/sfx/交互/sfx_打开设置.wav" id="2_6hxkf"]
[ext_resource type="Script" uid="uid://rq6w1vuhuq1m" path="res://scene/entity/audio/sfx.gd" id="3_kn03d"]
[ext_resource type="AudioStream" uid="uid://cmi6fd68s1ukb" path="res://asset/audio/sfx/交互/sfx_关闭设置.wav" id="4_n2b1f"]
[ext_resource type="Texture2D" uid="uid://f186lvt5y2ql" path="res://asset/art/ui/inspect/inspect背景遮罩.png" id="5_kn03d"]
[ext_resource type="FontVariation" uid="uid://1ryw42kej6lv" path="res://config/font_ui.tres" id="6_n2b1f"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_n2b1f"]
[node name="Settings" type="CanvasLayer"]
process_mode = 3
@ -26,202 +30,232 @@ bus = &"game_sfx"
script = ExtResource("3_kn03d")
metadata/_custom_type_script = "uid://rq6w1vuhuq1m"
[node name="ClickMask" type="Control" parent="."]
layout_mode = 3
[node name="TextureRect" type="TextureRect" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 0
texture = ExtResource("5_kn03d")
[node name="PanelContainer" type="PanelContainer" parent="."]
[node name="VBoxContainer" type="VBoxContainer" parent="."]
custom_minimum_size = Vector2(0, 199)
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -119.0
offset_top = -84.0
offset_right = 119.0
offset_bottom = 78.0
offset_left = -95.0
offset_top = -109.5
offset_right = 95.0
offset_bottom = 109.5
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
layout_mode = 2
size_flags_horizontal = 4
[node name="MarginContainer2" type="MarginContainer" parent="PanelContainer/VBoxContainer"]
[node name="总音量" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
theme_override_constants/margin_top = 6
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer"]
[node name="Label" type="Label" parent="VBoxContainer/总音量"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_总音量"
[node name="HSliderMasterBus" type="HSlider" parent="PanelContainer/VBoxContainer/HBoxContainer"]
[node name="HSliderMasterBus" type="HSlider" parent="VBoxContainer/总音量"]
unique_name_in_owner = true
custom_minimum_size = Vector2(100, 5)
layout_mode = 2
focus_neighbor_bottom = NodePath("../../HBoxContainer2/HSliderSfxBus")
focus_next = NodePath("../../HBoxContainer2/HSliderSfxBus")
size_flags_horizontal = 10
focus_neighbor_bottom = NodePath("../../音效音量/HSliderSfxBus")
focus_next = NodePath("../../音效音量/HSliderSfxBus")
max_value = 1.0
step = 0.01
value = 1.0
[node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
[node name="音效音量" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer2"]
[node name="Label" type="Label" parent="VBoxContainer/音效音量"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_音效音量"
[node name="HSliderSfxBus" type="HSlider" parent="PanelContainer/VBoxContainer/HBoxContainer2"]
[node name="HSliderSfxBus" type="HSlider" parent="VBoxContainer/音效音量"]
unique_name_in_owner = true
custom_minimum_size = Vector2(100, 5)
layout_mode = 2
focus_neighbor_top = NodePath("../../HBoxContainer/HSliderMasterBus")
focus_neighbor_bottom = NodePath("../../HBoxContainer5/HSliderDialogBus")
size_flags_horizontal = 10
focus_neighbor_top = NodePath("../../总音量/HSliderMasterBus")
focus_neighbor_bottom = NodePath("../../对话音量/HSliderDialogBus")
max_value = 1.0
step = 0.01
value = 1.0
[node name="HBoxContainer5" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
[node name="对话音量" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer5"]
[node name="Label" type="Label" parent="VBoxContainer/对话音量"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_对话音量"
[node name="HSliderDialogBus" type="HSlider" parent="PanelContainer/VBoxContainer/HBoxContainer5"]
[node name="HSliderDialogBus" type="HSlider" parent="VBoxContainer/对话音量"]
unique_name_in_owner = true
custom_minimum_size = Vector2(100, 5)
layout_mode = 2
focus_neighbor_top = NodePath("../../HBoxContainer2/HSliderSfxBus")
focus_neighbor_bottom = NodePath("../../HBoxContainer6/OptionButtonLanguage")
size_flags_horizontal = 10
focus_neighbor_top = NodePath("../../音效音量/HSliderSfxBus")
focus_neighbor_bottom = NodePath("../../语言/OptionButtonLanguage")
max_value = 1.0
step = 0.01
value = 1.0
[node name="HSeparator" type="HSeparator" parent="PanelContainer/VBoxContainer"]
[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer6" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
[node name="语言" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer6"]
[node name="Label" type="Label" parent="VBoxContainer/语言"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_语言"
[node name="OptionButtonLanguage" type="OptionButton" parent="PanelContainer/VBoxContainer/HBoxContainer6"]
[node name="VSeparator" type="VSeparator" parent="VBoxContainer/语言"]
layout_mode = 2
theme_override_constants/separation = 31
theme_override_styles/separator = SubResource("StyleBoxEmpty_n2b1f")
[node name="OptionButtonLanguage" type="OptionButton" parent="VBoxContainer/语言"]
unique_name_in_owner = true
layout_mode = 2
focus_neighbor_top = NodePath("../../HBoxContainer5/HSliderDialogBus")
focus_neighbor_bottom = NodePath("../../HBoxContainer4/AutoSaveCheckBox")
focus_neighbor_top = NodePath("../../对话音量/HSliderDialogBus")
focus_neighbor_bottom = NodePath("../../自动保存/AutoSaveCheckBox")
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
selected = 0
allow_reselect = true
item_count = 3
popup/item_0/text = "普通话(简体)"
item_count = 2
popup/item_0/text = "简体中文"
popup/item_0/id = 0
popup/item_1/text = "上海话(简体)"
popup/item_1/id = 1
popup/item_2/text = "English"
popup/item_2/id = 2
popup/item_1/text = "English"
popup/item_1/id = 2
[node name="HSeparator4" type="HSeparator" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer4" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
[node name="字幕" type="HBoxContainer" parent="VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
[node name="AutoSaveCheckBox" type="CheckBox" parent="PanelContainer/VBoxContainer/HBoxContainer4"]
[node name="Label" type="Label" parent="VBoxContainer/字幕"]
custom_minimum_size = Vector2(50, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_字幕"
[node name="VSeparator" type="VSeparator" parent="VBoxContainer/字幕"]
layout_mode = 2
theme_override_constants/separation = 31
theme_override_styles/separator = SubResource("StyleBoxEmpty_n2b1f")
[node name="OptionButtonCaption" type="OptionButton" parent="VBoxContainer/字幕"]
unique_name_in_owner = true
layout_mode = 2
focus_neighbor_top = NodePath("../../HBoxContainer6/OptionButtonLanguage")
focus_neighbor_top = NodePath("../../对话音量/HSliderDialogBus")
focus_neighbor_bottom = NodePath("../../自动保存/AutoSaveCheckBox")
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
selected = 0
allow_reselect = true
item_count = 2
popup/item_0/text = "上海话"
popup/item_0/id = 1
popup/item_1/text = "普通话"
popup/item_1/id = 0
[node name="HSeparator4" type="HSeparator" parent="VBoxContainer"]
layout_mode = 2
[node name="自动保存" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
[node name="AutoSaveCheckBox" type="CheckBox" parent="VBoxContainer/自动保存"]
unique_name_in_owner = true
layout_mode = 2
focus_neighbor_top = NodePath("../../语言/OptionButtonLanguage")
focus_neighbor_right = NodePath("../SaveTimeLineEdit")
focus_neighbor_bottom = NodePath("../../GridContainer/FullscreenBox")
focus_neighbor_bottom = NodePath("../../显示方式/FullscreenBox")
focus_next = NodePath("../SaveTimeLineEdit")
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_自动保存"
[node name="SaveTimeLineEdit" type="LineEdit" parent="PanelContainer/VBoxContainer/HBoxContainer4"]
[node name="SaveTimeLineEdit" type="LineEdit" parent="VBoxContainer/自动保存"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 10
focus_neighbor_left = NodePath("../AutoSaveCheckBox")
focus_neighbor_top = NodePath("../../HBoxContainer6/OptionButtonLanguage")
focus_neighbor_bottom = NodePath("../../GridContainer/FullscreenBox")
focus_next = NodePath("../../GridContainer/FullscreenBox")
focus_neighbor_top = NodePath("../../语言/OptionButtonLanguage")
focus_neighbor_bottom = NodePath("../../显示方式/FullscreenBox")
focus_next = NodePath("../../显示方式/FullscreenBox")
max_length = 5
caret_blink = true
[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer4"]
[node name="Label" type="Label" parent="VBoxContainer/自动保存"]
layout_mode = 2
size_flags_horizontal = 8
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "ui_秒"
[node name="GridContainer" type="GridContainer" parent="PanelContainer/VBoxContainer"]
[node name="显示方式" type="GridContainer" parent="VBoxContainer"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
size_flags_horizontal = 4
columns = 2
[node name="FullscreenBox" type="CheckBox" parent="PanelContainer/VBoxContainer/GridContainer"]
[node name="FullscreenBox" type="CheckBox" parent="VBoxContainer/显示方式"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
focus_neighbor_top = NodePath("../../HBoxContainer4/SaveTimeLineEdit")
focus_neighbor_top = NodePath("../../自动保存/SaveTimeLineEdit")
focus_neighbor_right = NodePath("../TopBox")
focus_neighbor_bottom = NodePath("../../HBoxContainer3/IndexBtn")
focus_next = NodePath("../TopBox")
text = "setting_全屏游戏"
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_全屏"
[node name="TopBox" type="CheckBox" parent="PanelContainer/VBoxContainer/GridContainer"]
[node name="TopBox" type="CheckBox" parent="VBoxContainer/显示方式"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
size_flags_horizontal = 10
focus_neighbor_left = NodePath("../FullscreenBox")
focus_neighbor_top = NodePath("../../HBoxContainer4/SaveTimeLineEdit")
focus_neighbor_bottom = NodePath("../../HBoxContainer3/ExitBtn")
focus_next = NodePath("../../HBoxContainer3/IndexBtn")
focus_neighbor_top = NodePath("../../自动保存/SaveTimeLineEdit")
focus_neighbor_bottom = NodePath("../../ReturnBtn")
focus_previous = NodePath("../FullscreenBox")
text = "setting_窗口置顶"
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_置顶"
[node name="HSeparator3" type="HSeparator" parent="PanelContainer/VBoxContainer"]
visible = false
[node name="HSeparator3" type="HSeparator" parent="VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer3" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
visible = false
custom_minimum_size = Vector2(0, 35)
layout_mode = 2
[node name="IndexBtn" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer3"]
[node name="ReturnBtn" type="Button" parent="VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 6
size_flags_vertical = 4
focus_neighbor_top = NodePath("../../GridContainer/FullscreenBox")
focus_neighbor_right = NodePath("../ExitBtn")
focus_next = NodePath("../ExitBtn")
focus_previous = NodePath("../../GridContainer/TopBox")
text = "setting_主界面"
[node name="ExitBtn" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer3"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 6
size_flags_vertical = 4
focus_neighbor_left = NodePath("../IndexBtn")
focus_neighbor_top = NodePath("../../GridContainer/TopBox")
focus_previous = NodePath("../IndexBtn")
text = "setting_退出"
focus_neighbor_top = NodePath("../显示方式/TopBox")
focus_previous = NodePath("../显示方式/TopBox")
theme_override_fonts/font = ExtResource("6_n2b1f")
theme_override_font_sizes/font_size = 11
text = "setting_返回"