UI 样式和对话框
Galgo 的基础 UI 外观由 style.UIStyle 控制。它覆盖对话框、角色名标签、选择按钮、快捷按钮、菜单、标题页和提示条等常用元素。
默认样式
go
customStyle := style.DefaultUIStyle()把样式传给引擎:
go
engine, err := galgo.NewEngine(galgo.Config{
Style: customStyle,
}, nil)如果 Config.Style 没有设置必要颜色,NewEngine 会使用默认样式。
对话框字段
常用对话框字段:
DialogueBoxColor:对话框背景色。DialogueBorderColor:边框颜色。DialogueBorderWidth:边框宽度。DialogueBorderRadius:圆角。DialoguePaddingX、DialoguePaddingY:内部文字边距。DialogueMargin:对话框距离屏幕边缘的间距。DialogueHeight:对话框高度。DialogueBoxStyle:对话框位置。TextColor:正文颜色。TextMutedColor:弱化文字颜色。TextFontSize:正文大小。LineSpacing:行距。
示例:
go
ui := style.DefaultUIStyle()
ui.DialogueBoxColor = color.RGBA{30, 20, 45, 230}
ui.DialogueBorderColor = color.RGBA{236, 72, 153, 180}
ui.DialogueBorderWidth = 2.5
ui.DialogueBorderRadius = 16
ui.DialoguePaddingX = 26
ui.DialoguePaddingY = 22对话框位置
DialogueBoxStyle 支持:
style.BoxStyleBottom:默认底部对话框。style.BoxStyleTop:顶部对话框。style.BoxStyleCenter:屏幕中央对话框。
go
ui.DialogueBoxStyle = style.BoxStyleBottom普通台词使用对话框:
go
galgo.Text("Aria", "今天也一起回家吧。")旁白可以传空角色名:
go
galgo.Text("", "夕阳从窗边落下。")气泡台词
气泡台词会尽量靠近说话角色的立绘:
go
galgo.TextBubble("Aria", "小声点。")如果没有对应角色立绘,气泡会退回到屏幕中上部。气泡仍然支持富文本、变量插值和翻译 key。
名字标签
常用字段:
NameBgColorNameBorderColorNameTextColorNameBorderRadiusNameFontSizeOffset
NameFontSizeOffset 是相对 Config.FontSize 的偏移,而不是绝对字号。
选择按钮
选择按钮字段:
ChoiceBgColorChoiceBorderColorChoiceTextColorChoiceHoverBgColorChoiceHoverBorderColorChoiceWidthChoiceHeightChoiceSpacingChoiceBorderRadius
示例:
go
ui.ChoiceWidth = 560
ui.ChoiceHeight = 48
ui.ChoiceSpacing = 14
ui.ChoiceBorderRadius = 10快捷按钮
对话框底部的快捷按钮包括:
LOGAUTOSKIPSAVELOADMENU
相关样式字段:
QuickBtnBgColorQuickBtnHoverBgColorQuickBtnTextColorQuickBtnActiveBgColorQuickBtnActiveTextColorQuickBtnBorderRadius
快捷按钮行为目前是内置的。如果要完全改变快捷按钮布局,可以通过 Config.Hooks.OnDrawDialogueBox 接管对话框绘制,或后续扩展对应的模块化 UI 配置。
标题页样式
标题页的基础文字样式由这些字段控制:
TitleTextColorTitleOptionColorTitleOptionHoverColorTitleSubtitleColorTitleFontSizeTitleOptionFontSize
标题页按钮和模块的结构由 Config.TitleMenu 控制,详见 标题页和首页模块。
提示条
Engine.ShowToast 会显示短消息:
go
engine.ShowToast("设置已保存")提示条样式字段:
ToastBgColorToastTextColorToastBorderColorToastBorderRadius
文本绘制辅助
自定义 UI 模块中可以使用 Engine.DrawText:
go
Draw: func(e *galgo.Engine, screen *ebiten.Image, m galgo.TitleModule, b galgo.UIRect) bool {
e.DrawText(screen, "Custom title module", m.X+20, m.Y+24, 16, color.White)
return true
}坐标按 1280x720 的逻辑尺寸填写,引擎会按当前窗口缩放。