Skip to content

example 示例导览

example/main.go 是 Galgo 的功能展示。它不是最小示例,而是尽量把引擎能力串到一个可运行 demo 里。

运行

powershell
go run ./example

如果只想验证编译:

powershell
go test ./...

i18n

示例创建了 i18n.Translator,添加中英文语言包,并设置默认语言:

go
translator := i18n.NewTranslator()
translator.AddLanguage("zh", map[string]string{...})
translator.AddLanguage("en", map[string]string{...})
translator.SetLanguage("zh")

剧情文本和 UI 文本都可以通过 key 翻译。缺失 key 时会回退到原字符串。

自定义样式

示例基于 style.DefaultUIStyle() 改色:

  • 对话框背景和边框。
  • 名字标签颜色。
  • 强调色。
  • 圆角。
  • 对话框位置。

这展示了“只改样式,不改绘制逻辑”的最低成本定制方式。

渲染钩子

Config.Hooks.OnPostProcess 在示例中绘制了一圈边框:

go
OnPostProcess: func(screen *ebiten.Image) {
    w, h := float32(screen.Bounds().Dx()), float32(screen.Bounds().Dy())
    vector.StrokeRect(screen, 4, 4, w-8, h-8, 3, borderColor, true)
}

这说明可以在默认画面完成后追加全屏效果。

标题页模块

示例使用 DefaultTitleMenuConfig() 创建标题页配置,然后添加一个 TitleModule

模块展示:

  • 自绘背景。
  • 使用 Engine.DrawText 绘制文字。
  • 点击模块时调用 ShowToast

示例还重排了标题页按钮,并新增 BONUS FLAG 按钮,用 galgo.Action 写变量。

设置页组件

示例创建了完整 SettingsConfig,包含四组:

  • Gameplay:文字速度、变量开关、自定义组件。
  • Audio:Voice、BGM、SFX 音量滑块。
  • Display:全屏、分辨率、语言。
  • Navigation:成就、CG 画廊、音乐画廊、返回标题。

它展示了:

  • 组件排序。
  • section 排序。
  • slider。
  • toggle。
  • options。
  • button。
  • custom draw。
  • custom click。
  • visible 条件。

启动页

示例启用了启动页:

go
StartupEnabled:   true,
StartupLogoText:  "Galgo",
StartupSubtitle:  "School Days Demo",
StartupMinFrames: 90,
LoadingText:      "Loading",
LoadingMinFrames: 45,

启动页之后进入标题页。

画廊和成就

示例配置了 CG、BGM 和成就:

go
GalleryCGs: []galgo.GalleryCGItem{...}
GalleryBGMs: []galgo.GalleryBGMItem{...}
Achievements: []galgo.AchievementItem{...}

剧情中通过 UnlockAchievement 解锁成就。背景和 BGM 会参与画廊解锁。

输入框

开局输入玩家名:

go
galgo.Input("player_name", "What should Aria call you?",
    galgo.InputDefault("Haruto"),
    galgo.InputPlaceholder("Your name"),
    galgo.InputMaxRunes(16),
)

后续文本用 插值。

富文本和气泡

示例使用了:

  • [speed=6]
  • [wait=20]
  • [color=#F43F5E]
  • [size=20]
  • [shake]

也展示了 TextBubble,气泡会靠近角色立绘显示。

拖放交互

示例要求玩家把 Promise 拖到目标区域。投放成功后:

  • 设置变量 promise_token_ready
  • 解锁成就 first_drag

这是一个典型的剧情内小游戏交互。

分支和结局

示例包含两个分支:

  • walk_home
  • club_duties

每个分支会设置 walked_together,最后通过 Callback 判断变量并跳到不同结局。

镜头、闪白和震屏

示例使用:

go
galgo.Camera(0, 40, 1.25, 40)
e.Flash(color.RGBA{255, 255, 255, 255}, 25)
e.Shake(12.0, 20)

这些能力适合强调剧情瞬间。

扩展示例时的建议

如果新增一个引擎能力,建议在 example 中补一处可点击、可看到效果的演示。文档说明 API,example 验证体验,两者配合更容易发现回归。

Released under the project license.