资源、音频和字体
Galgo 通过 ResourceManager 统一加载图片、音频和字体。资源可以来自 embed.FS、本地文件路径或额外资源根。
加载顺序
默认资源查找顺序:
- 如果
NewEngine传入了*embed.FS,先尝试从 embed FS 打开。 - 再尝试按本地文件路径打开。
- 最后尝试从额外资源根中查找。
额外资源根适合 DLC、用户包、外置语音包等:
go
engine.ResourceManager.AddSearchRoot("./dlc/episode_2")之后脚本仍可以写相对路径:
go
galgo.Bg("dlc_room", "assets/bg/dlc_room.png")图片资源
图片主要用于背景、立绘、标题背景和 CG 画廊。
背景:
go
galgo.Bg("classroom", "assets/bg_classroom.jpg")立绘:
go
galgo.Sprite("Aria", "aria_happy", "assets/char_aria.jpg", galgo.PosCenter)标题页背景:
go
galgo.Config{
TitleBgImagePath: "assets/title_bg.png",
}CG 画廊配置:
go
GalleryCGs: []galgo.GalleryCGItem{
{Key: "classroom", Path: "assets/bg_classroom.jpg", Name: "夕阳教室"},
},Bg 设置成功时会自动调用 UnlockCG,因此背景可以直接作为 CG 解锁。
音频资源
Galgo 内置三类音频通道:
- BGM:背景音乐,通常循环播放。
- SE:音效,通常短促播放。
- Voice:角色语音,通常跟台词同步。
播放 BGM:
go
galgo.PlayBGM("school_life", "assets/bgm_school.mp3")播放 SE:
go
galgo.PlaySE("door", "assets/se_door.ogg")带语音台词:
go
galgo.TextWithVoice("Aria", "欢迎回来。", "aria_welcome", "assets/voice/aria_welcome.ogg")音乐画廊配置:
go
GalleryBGMs: []galgo.GalleryBGMItem{
{Key: "school_life", Path: "assets/bgm_school.mp3", Name: "校园日常"},
},音量
设置页内置 VolumeValue:
go
galgo.SettingsComponent{
ID: "bgm",
Label: "BGM Volume",
Kind: galgo.SettingsComponentSlider,
Value: &galgo.VolumeValue{Channel: "bgm"},
}Channel 可选值:
"bgm""se""voice"
字体
如果不指定字体,Galgo 会尝试查找系统字体。建议正式项目明确设置:
go
galgo.Config{
FontPath: "assets/fonts/NotoSansCJK-Regular.otf",
}字体需要覆盖项目使用的语言。中文、日文、韩文建议使用 CJK 字体,否则会出现缺字或乱码。
embed 使用建议
把资源嵌入二进制可以降低部署复杂度:
go
package main
import "embed"
//go:embed assets/*
var assets embed.FS初始化:
go
engine, err := galgo.NewEngine(config, &assets)开发期资源经常变化时,本地路径更方便。发布前再决定是否 embed。
资源 key 命名
资源 key 是缓存和引用的标识,建议稳定:
- 背景:
bg_classroom_day - 立绘:
aria_happy - BGM:
school_life - SE:
door_open - Voice:
aria_001
避免在 key 中使用空格、中文标点或临时文件名。路径可以改,key 尽量不改。