事件表特殊条件动作用法

在唤境Evkworld中事件表是整个游戏逻辑的核心,在这篇教程中将会介绍事件表的一些高级用法,制作比普通事件逻辑更复杂的事件.在阅读本篇教程之前需要您了解唤境Evkworld事件的工作原理和编辑事件的方法.

特殊的条件动作

系统条件中个别的条件动作于其他的条件动作工作方式不同,下面将会针对这些特殊事件进行详细的讲解。

条件:仅触发一次

这个条件作用是让持续触发的条件变成只触发一次.与持续检测事件组合使用检测”如果最后一次没有达到这个条件”,仅触发一次条件置于条件最下方.
如下图所示,一般制作播放音乐时都会犯以下的错误.当飞机血量等于0时,播放飞机播放音频.但是事件是每帧执行的,一般游戏中FPS一般为60,所以这个音效会播放60次.

这是不符合我们的预想的,我们只需要当飞机血量等于0时,播放一次飞机爆炸的音频.所以我们添加”仅触发一次”条件,让当音效只播放一次.

条件:全选实例

一般事件的执行方法是通过条件过滤不符合条件的实例,选择符合条件的所有实例执行动作.而全选实例则是反向运行的唯一条件,这个条件会重新选择所有实例对象,在后续的条件中再次通过条件筛选实例.在多重嵌套事件中,可以快速的重置选择的实例对象.

下图的例子中,条件是当点击对象精灵_1时,精灵_1销毁。

条件会对操作的对象进行筛选,具体请参考事件表如何运作。 预览游戏时,当点击了中间的精灵_1实例后,被点击的精灵_1会销毁。 但左右两边的精灵_1实例没有销毁。
下图中,在点击精灵_1的子事件内,加入了【全选实例】条件。 该条事件下,操作的精灵_1从被点击的实例变成了全部实例。实际运行效果是:当点击任意精灵_1实例后,所有场景中的精灵_1销毁。

【全选实例】只会该条件所在的事件生效。如下图所示,实际运行效果是,点击后,所有精灵_1旋转45°,但只有被点击的精灵销毁。

条件:否则else

这个条件作用于当前一个事件没有执行,则运行这条事件,这个条件必须用于条件的第一个.

下面的例子是当触摸屏幕时,如果全局变量状态等于0设置全局变量状态为1,全局变量状态等于1设置全局变量状态为0.

新使用唤境Evkworld的用户可能会经常犯下图所示的错误.因为事件表是从上往下执行的,所以下图所设置的事件表在每一次触摸屏幕时都会先把全局变量状态值设置为1,但又马上符合下面一个条件,把全局变量状态值设置为0.

我们只需要把第二个子事件改为使用否则else就可以了.

请注意,”否则else”条件不会选择任何实例,请看下面一个例子.

上面所示的事件希望当怪物在屏幕内时,让怪物的方向朝向玩家,当怪物不再屏幕内时,让怪物转向90度.这有两个问题。首先如果有任何怪物在屏幕上,那么”否则else”条件将根本不会运行,因为第一个事件已经运行,因此”否则else”不会运行。第二即使”否则else”事件运行,它也不会特意选择屏幕外的怪物:它会影响所有怪物,因为”否则else”不会选择实例。在这种情况下,最好简单地用事件的反转功能,如下图所示即可达到效果.

使用”否则else”组合其他条件即制作”else-if”逻辑,如下图所示.

条件:循环

唤境目前提供了5个循环的条件,实际运行的原理都是一样的,因此本教程只针对For循环进行讲解。

For循环的条件有3个参数:

  • 名称:当前循环的名称,可以通过表达式loopindex(“循环名称”)获取指定循环的索引。
  • 起始索引:循环开始时的索引值
  • 结束索引:循环结束时的索引值。

For循环的执行原理是: 从起始索引的值开始,重复循环所在的事件,每循环一次,索引+1,直到索引大于结束索引。比如:起始索引是1,结束索引是10。 那么循环就会执行10次

下图的示例中,场景开始时,循环10次,每次变量+1.

循环也会影响子事件,下图中,执行顺序是,先在场景开始时,执行编号1的条件。 然后执行编号2->执行编号3->执行编号2->执行编号3,循环10次。

可以在循环中,通过表达式loopindex(“循环名称”)获取当前循环的索引,也就是循环到了第几次。

动作:停止循环

停止循环动作位于【系统组件】中,可以手动停止循环。

停止循环后,当前循环的事件还是会继续执行。 下图中:先停止循环,然后变量+1。由于循环停止,不会再次触发变量+1的事件。

动作:启用/禁用事件组

该动作可以禁用或启用任意事件组(包括引用的全局事件表中的事件组)。被禁用的事件组里面的事件将不再执行,直到再次启用。


需要注意的是,该动作禁用或启用的事件组是整个游戏内生效的。 也就是说,如果你再场景1禁用了某事件组,跳转到场景2,在跳转回场景1, 该场景的事件组依然是禁用的。所以在使用了禁用事件组的动作后,一定要在某个位置,重新启动事件组。