ModAPI 接口参考
在模组脚本中,所有游戏能力均封装于全局安全门面 ModAPI 中。严禁直接访问底层操作系统或未经授权的文件系统。
本文档由 types/mod_api.d.lua 自动提取生成,并严格通过 CI 一致性校验(函数数量:19)。
1. 叙事对话与轻量提示 (Narrative & Dialogue)
ModAPI.say(text, speaker)
在游戏画面中弹出对白或内心独白
参数:
text(string): 对白正文内容speaker(string(可选)): 讲述者名字(默认 “我”)
ModAPI.choice(speaker, text, choices, callback_func_name)
向玩家展示多分支选项对话框
参数:
speaker(string): 讲述者名字text(string): 提问或前置对白choices(string[]|table[]): 分支选项文本数组,或包含 id 与 text 的字典数组callback_func_name(string(可选)): 玩家点击选项后回调的函数名(接收选项索引与数据)
ModAPI.add_choice(target_id, choice_text, callback_func_name)
向场景交互物体(如 “kettle”, “window”, “bed”)注入额外的互动选项
参数:
target_id(string): 交互物体 ID(例如 “kettle”)choice_text(string): 选项展示文本(例如 “[模组] 冲泡一杯热挂耳咖啡”)callback_func_name(string): 点击该选项后调用的本地函数名
ModAPI.toast(message)
在屏幕顶部弹出轻量化点阵气泡通知
参数:
message(string): 提示文本
2. 世界时钟与四时状态 (World & Time)
ModAPI.get_day()
获取当前游戏生存天数(从 1 开始累加)
返回值:
integerday: 当前天数
ModAPI.get_period()
获取当前离散时段枚举整数 (0: 清晨, 1: 正午, 2: 傍晚, 3: 深夜)
返回值:
integerperiod: 当前时段数值 (0-3)
ModAPI.get_period_name()
获取当前时段的可读本地化名称(例如 “清晨”, “正午”, “傍晚”, “深夜”)
返回值:
stringperiod_name: 时段中文名称
ModAPI.advance_time()
将当前世界时段推进一个档位(清晨 -> 正午 -> 傍晚 -> 深夜 -> 次日清晨)
ModAPI.get_flag(key, default_value)
获取全局场景黑板标记(跨场景共享状态)
参数:
key(string): 状态键名default_value(any(可选)): 若键不存在时的默认返回值
返回值:
anyvalue: 存储的状态值
ModAPI.set_flag(key, value)
写入全局场景黑板标记
参数:
key(string): 状态键名value(any): 需要保存的值
3. 隔离持久化存档 (Isolated Mod Storage)
ModAPI.get_data(key, default_value)
读取本 Mod 私有命名空间下的持久化数据(与原版核心存档完全隔离)
参数:
key(string): 键名default_value(any(可选)): 默认值
返回值:
anyvalue: 存储的值
ModAPI.set_data(key, value)
写入本 Mod 私有命名空间下的持久化数据
参数:
key(string): 键名value(any): 需要保存的值
4. 资源加载与生命周期钩子规范 (Lifecycle Hooks)
ModAPI.load_texture(rel_path)
动态加载 Mod 内部的 PNG 贴图资源(免 .import 缓存,缺失时自动回退占位图)
参数:
rel_path(string): 相对于本 Mod 根目录的相对路径(严禁包含 ”..”)
返回值:
anytexture: 纹理对象引用
ModAPI.load_audio(rel_path)
动态加载 Mod 内部的 OGG 音频流资源
参数:
rel_path(string): 相对于本 Mod 根目录的相对路径
返回值:
anyaudio_stream: 音频流对象引用
5. 标准生命周期回调函数 (Lifecycle Hooks)
创作者在 Mod 主脚本中直接实现以下顶级函数,游戏主循环在特定时机将自动回调:
on_loaded()
当 Mod 装载进游戏内存时触发
on_period_changed(prev_period, curr_period)
当时段发生更迭推进时触发
参数:
prev_period(integer): 变更前时段 (0-3)curr_period(integer): 变更后时段 (0-3)
on_day_advanced(current_day)
当深夜结算并跨入新的一天时触发
参数:
current_day(integer): 新的一天数
on_interacted(target_id)
当主角在场景中与特定生活物件交互时触发
参数:
target_id(string): 交互点 ID (如 “kettle”, “window”, “bed”, “street_bench”)
on_scene_entered(scene_path)
当进入新场景加载完毕时触发
参数:
scene_path(string): 场景路径标识