跳到主要内容

自定义事件

一. 什么是自定义事件

在编辑器中,一局游戏中的 单位移动、技能释放、点击按钮......都会在后台通过“事件”的方式记录下来。触发编辑器中给出了的很多的预设事件,我们只需要修改下参数就可以直接使用。除此之外,我们还可以自己新建一个自定义事件,自己来定义事件中包含着哪些参数。

二. 什么情况下需要用到自定义事件

在考虑自定义事件的使用情境前,我们需要先理清服务端和客户端这两个概念。在编辑器中,客户端主要负责游戏中的用户交互界面和表现,服务端则主要负责游戏局内的运算以及与时间相关的事务。

自定义事件通常应用于以下情境:

  1. 当触发器需要用到的事件是编辑器给出的预设事件中所没有的时,需要我们创建一个自定义事件。

  2. 当服务端监听到某个事件后需要在客户端执行一些操作,或是客户端监听到某个事件后需要在服务端执行一些行为时。自定义事件作为服务端和客户端之间沟通的桥梁,起着相互间传递触发的作用。

  1. 除了在触发编辑器中使用,自定义事件还广泛应用于界面编辑器中。我们可以为界面编辑器中的基础控件中的 点击、长按、鼠标进入……等等行为创建触发器,这样当用户操作控件时就会触发其中的自定义事件。

三. 自定义事件的使用方法

  1. 新建自定义事件时,可以为其新建参数并指定类型,参数会随着事件的触发和响应进行传递。

  2. 在服务端创建自定义事件时,如需在客户端响应,需要勾选”自动转发到客户端“。反之亦然。

  3. 自定义事件需要先在某个触发器中被触发,随后在另一个触发器中作响应。当然,自定义事件可以在多个触发器中被触发,在多个触发器中做出响应。

  4. 在触发自定义事件时,需要设置其参数。

  5. 在响应自定义事件时,可以用如下方法使用自定义事件中的参数。

    单击触发中的数字/字符串参数后选择:函数-触发器-触发事件[xxxxx][xxx]  

注意:跨端(如服务端发到客户端)的自定义事件不能使用无法序列化的类型,如元组、Map、集合等原生TS类型;自定义类的对象;以及拥有上述类型的简单表。

四. 案例

在游戏局内发现玩家进入放置区域,按钮出现,点击按钮玩家就会放置该道具。(以下方法仅供教学,相信还有更简便的写法)

步骤一: 在服务端创建自定义事件“按钮是否可见”,设置其中的参数为“可见吗”,类型为数字,勾选”自动转发到客户端“

步骤二:在服务端创建触发器,监视事件为单位移动,当玩家的主控单位区域进入区域时,触发自定义事件。

步骤三:在界面编辑器创建一个放置按钮,可见性设为隐藏。

步骤四:在客户端创建如下的触发器来控制这个按钮的可见性。

步骤五:在客户端新建自定义事件“点击按钮”。

步骤六: 在界面编辑器中,为刚刚创建的按钮新建点击事件,触发上一步创建的自定义事件。

接下来就可以响应这个事件,在游戏中执行更多动作啦。