收集物品时触发自定义事件
信息
本教程适用于 Horror Game Kit 用户。
概述
本教程指导创作者在玩家收集物品时,利用 Yahaha 的自定义事件系统和 Lua 脚本,触发雷声、降雨和光照变化等自定义事件,扩展 Kit 能力。
前提条 件
在开始前,请确保:
步骤1:设置雷声音频
- 在 Scene Explorer 中通过 创建 > 音频 新建音频对象。

- (可选)重命名音频对象为 Thunder。
- 打开对象 属性 窗口,分配雷声音频片段(如 thunder (1))。
- 通过 添加组件 > 自定义事件通知器 添加组件到音频对象。
- 在音频上配置事件触发器:
- 触发对象:自身

- 触发对象:自身
步骤2:设置光照
- 在 Scene Explorer 中通过 创建 > 灯光 > 点光源 添加点光源。
- 调整位置和亮度以营造黑暗环境对比。
- 添加自定义事件通知器组件到灯光。

步骤3:添加可收集物品
- 从 Packages 添加 Collectable Item 智能资产到场景,内含收集逻辑。
- 按需摆放。

步骤4:新建并配置事件处理空对象
- 在 Scene Explorer 中通过 创建 > 空对象 添加空对象,用于挂载 Lua 脚本。
- 给空对象添加组件:
- 添加自定义事件通知器组件。
步骤5:定义并分配脚本字段
- 给空对象添加 Lua 脚本并命名为 CustomEvent。
- 在
CustomEvent.lua中定义音频、灯光和空对象字段:
local fieldDefs = {
{...},
}
script.DefineFields(fieldDefs)
- 在空对象 属性 窗口,将雷声音频、点光源和空对象分配到这些字段。

步骤6:实现运行逻辑
在空对象的 CustomEvent.editor.lua 脚本中,添加如下逻辑控制天气、音频和光照效果:
local YaResourceManager = YahahaMiddleLayerSlim.Resource.YaResourceManager
local skySystem = require("com.yahaha.sdk.graphics.SkyUtils")
local weatherSystem = require("com.yahaha.sdk.graphics.WeatherUtils")
-- 触发黑暗天气效果(雷声、雨、光照变化)
-- 游戏内响应触发黑暗模式
function response_in_game()
SetDark()
end
-- 激活雷声、变暗太阳、开始下雨、关闭灯光
function SetDark()
script.fields.AudioThunder:SetActive(true)
end
local eventObject = script.fields.triggerEventObject
-- 回调函数,事件触发时执行 SetDark
local callback = function()
SetDark()
end
-- 注册自定义事件回调
if eventObject then
yahaha.EventSystem:RegisterObjectEvent(eventObject, "com.yahaha.sdk.trigger.CustomEvent", callback)
end
-- 脚本销毁时清理事件注册
script.OnDispose(function()
yahaha.EventSystem:UnregisterObjectEvent(eventObject, "com.yahaha.sdk.trigger.CustomEvent", callback)
end)
步骤7:试玩
进入试玩模式,收集物品,确认雷声、雨和光照变化效果。
相关资源
- 自定义事件通知器
- 按 F5 开始试玩,按 F12 打开控制台调试。