初次提交
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
## 启动画面:公司/游戏商标 + 引擎版权 → 自动跳转主菜单
|
||||
extends Control
|
||||
|
||||
const HOLD_SEC: float = 1.8 # 完全显示后停留时长
|
||||
var _timer: float = 0.0
|
||||
var _skip_ready: bool = false # 防止首帧立即跳过
|
||||
|
||||
func _ready() -> void:
|
||||
SceneManager.fade_in_first()
|
||||
_build_ui()
|
||||
# 延迟一帧后才允许跳过(防止启动时按键残留)
|
||||
call_deferred("_allow_skip")
|
||||
|
||||
func _allow_skip() -> void:
|
||||
_skip_ready = true
|
||||
|
||||
func _build_ui() -> void:
|
||||
# 全屏渐变背景
|
||||
var bg := ColorRect.new()
|
||||
bg.color = Color(0.04, 0.04, 0.09)
|
||||
bg.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
||||
add_child(bg)
|
||||
|
||||
# 工作室名
|
||||
var studio := Label.new()
|
||||
studio.text = "LANTERN GAMES"
|
||||
studio.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
studio.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
studio.set_anchors_and_offsets_preset(Control.PRESET_CENTER)
|
||||
studio.position.y = -80
|
||||
studio.add_theme_font_size_override("font_size", 18)
|
||||
studio.modulate = Color(0.7, 0.7, 0.7)
|
||||
add_child(studio)
|
||||
|
||||
# 游戏标题
|
||||
var title := Label.new()
|
||||
title.text = "魔法工匠"
|
||||
title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
title.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
title.set_anchors_and_offsets_preset(Control.PRESET_CENTER)
|
||||
title.add_theme_font_size_override("font_size", 64)
|
||||
title.modulate = Color(1.0, 0.85, 0.3)
|
||||
add_child(title)
|
||||
|
||||
# 英文副标题
|
||||
var sub := Label.new()
|
||||
sub.text = "Arcane Artificer"
|
||||
sub.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
sub.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
|
||||
sub.set_anchors_and_offsets_preset(Control.PRESET_CENTER)
|
||||
sub.position.y = 64
|
||||
sub.add_theme_font_size_override("font_size", 22)
|
||||
sub.modulate = Color(0.7, 0.75, 1.0)
|
||||
add_child(sub)
|
||||
|
||||
# 提示
|
||||
var hint := Label.new()
|
||||
hint.text = tr("SPLASH_SKIP_HINT")
|
||||
hint.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
hint.set_anchors_preset(Control.PRESET_BOTTOM_WIDE)
|
||||
hint.position.y = -40
|
||||
hint.add_theme_font_size_override("font_size", 13)
|
||||
hint.modulate = Color(0.5, 0.5, 0.5)
|
||||
add_child(hint)
|
||||
|
||||
# 版权
|
||||
var copy := Label.new()
|
||||
copy.text = "© 2026 Lantern Games | Powered by Godot 4.6"
|
||||
copy.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
copy.set_anchors_preset(Control.PRESET_BOTTOM_WIDE)
|
||||
copy.position.y = -16
|
||||
copy.add_theme_font_size_override("font_size", 11)
|
||||
copy.modulate = Color(0.4, 0.4, 0.4)
|
||||
add_child(copy)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
_timer += delta
|
||||
if _timer >= HOLD_SEC:
|
||||
_go_to_menu()
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if not _skip_ready:
|
||||
return
|
||||
if event.is_action_pressed("ui_accept") or event.is_action_pressed("ui_cancel") \
|
||||
or (event is InputEventMouseButton and event.pressed):
|
||||
_go_to_menu()
|
||||
|
||||
func _go_to_menu() -> void:
|
||||
set_process(false)
|
||||
set_process_input(false)
|
||||
SceneManager.goto_main_menu()
|
||||
Reference in New Issue
Block a user