触发器
触发器是一个ECA结构,完整的ECA结构由事件(Event)条件(Condition)动作(Action)组成。
事件、条件、动作
事件是触发器的开始,条件是需要满足的要求,动作是触发器的输出结果。
如果没有事件,条件和动作只是“零散积木”,事件是触发器最重要的大前提。
如果没有设置条件,事件被触发后默认满足所有条件,将直接输出动作效果;如果设置了条件,条件判断为真时动作生效,不满足条件则动作不生效或进入其他动作分支。
如果没有动作,事件和条件的组合不会输出触发效果。
触发器组
触发器组各自拥有单独的页面,可以在玩法编写时将不同的系统功能分别写在不同的触发器组内,便于分类。不同触发器组在蛋码运行时处于同一优先级。
在单个触发器组内编写数量较多的编辑器可能会导致蛋码界面加载时间变长,大量的积木也会让我们挪动视野寻找目标积木变得困难,所以使用触发器组来管理我们的触发器是较有必要的。
需要注意的是,触发器组间不能共用同一个局部变量。
全局触发器与对象触发器
全局触发器是地图的主逻辑,在游戏开始时生效,它面向整个地图发送指令;而对象触发器只给某个对象发送指令。可以把全局触发器看作是一个大的系统,而对象触发器是我们安装的应用程序,它们在同一个地图内运行但不互通。
蛋码中的对象触发器主要在更多里的【物体预设】中,通过给预设物体编辑蛋码来创建,可以用它实现玩法中的类逻辑(当生物蛋被创建时)和对象逻辑(当指定生物蛋被攻击时)。
全局变量可在所有触发器(全局触发器、角色触发器,所有对象触发器使用),局部变量只能在单个触发器(全局触发器或角色触发器或某个组件的对象触发器)的单个触发器组中使用。
子触发器
我们可以在触发器的动作中创建一个子触发器,这样当蛋码中的逻辑运行到子触发器位置时,会新建一个触发器,并把这个触发器事件进行注册。子触发器在注册以后就会独立运行,即按照正常触发器的事件和条件,然后执行子触发器的动作。运行完子触发器后,可以根据需要对当前的子触发器进行动态销毁。
子触发器和全局触发器的区别在于,子触发器实际上是一种变量类型,可以在使用完毕以后销毁它,另外,因为子触发器是在游戏进程中注册,所以我们可以把变量中的数据传递给子触发器进行注册。
