目录 初始化流程① 最新版本下载请前往》》 坤坤出品 | 预制体大合集 | 适配027版本
有细心的同学可能发现了,我之前发布的预制体集合里大部分都有一个叫PrefabEvent的脚本,有很多小伙伴想尝试改预制体或者想基于这个脚本二次创作预制体时都觉得这一块内容看不太明白,今天给大家简单介绍一下这个PrefabEvent协议,让大家能够更好地进行二次开发~
PrefabEvent初始化流程及简单使用
1. 首先需要将上面的附件PrefabEvent.ts下载下来,并导入编辑器内,随后还需要导入“玩家系统”的预制体,“玩家系统”这个预制体是一定需要放入场景中的。
2. 新建一个预制体后去新建一个脚本挂载到预制体节点下面,在脚本的onStart生命周期中初始化触发器的onEnter事件。
3. 将上面的PrefabEvent.ts文件也拖入一份到这个文件目录下。
4. 如下图所示去搭建这个预制体。拖入了一个锥体是为了方便辨识这个预制体的位置。示例脚本大部分都是这样的预制体结构。
5. 如下编写代码,将这个预制体拖入到场景中,如果场景上有拖入玩家系统,当玩家碰到这个触发器时则会受到伤害。
// 导入 "PrefabEvent" 模块中的 "PrefabEvent" 类
import { PrefabEvent } from "./PrefabEvent";
// 声明一个默认导出的类 "NewScript",继承自 "Core.Script"
@Core.Class
export default class NewScript extends Core.Script {
/** 当脚本被实例化后,会在第一帧更新前调用此函数 */
protected onStart(): void {
// 如果当前是客户端,直接返回
if (SystemUtil.isClient()) {
return;
}
// 获取当前实例化的游戏对象并在对象准备就绪后执行回调
this.gameObject.ready().then(go => {
// 将当前游戏对象转换为 "Gameplay.Trigger" 类型
let trigger = go as Gameplay.Trigger;
// 当有其他游戏对象进入触发器时,执行回调
trigger.onEnter.add((other: Core.GameObject) => {
// 触发一个名为 "PrefabEvtFight" 的伤害事件,并传入当前游戏对象的 guid 和其他游戏对象的 guid,伤害值为 10
PrefabEvent.PrefabEvtFight.hurt(this.gameObject.guid, other.guid, 10);
})
})
}
}
关注我,更多好用的预制体会逐步发出来!
|