事件顺序

在考虑 GameMaker 中的事件时,应注意无法清楚说明每个步骤中所有事件将发生的确切顺序,这仅仅是因为它取决于 GameMaker 的内部工作方式,并且随着软件的开发,这可能会随着软件的开发或基于运行游戏的平台而发生变化。但是,某些事件将始终以相同的顺序运行。

进入房间后

总是以相同方式发生的第一组事件是第一次进入房间时发生的事件。不同事件的触发顺序是:

注意您还可以通过在实例层属性窗口的列表中上下移动特定实例来设置在房间编辑器中创建特定实例的顺序。

每一步/帧

除了这些特定事件之外,游戏步骤中的事件也总是以相同的顺序发生。但是,事件中实例的顺序并不总是得到保证,并且可能会在不同的 GameMaker 版本和目标平台之间有所不同。

作为一般规则,您可以依赖下面列出的事件顺序,但不能依赖房间中的实例执行某个事件的顺序。

例如,您将在下面看到"步"事件总是在"步开始"事件之后执行,但是您不能保证,例如,Object2 总是在 Object1 之后执行其步事件。如果您需要这样的执行顺序,则建议使用不同的事件(例如,如果您需要在 Object1 的步之后执行它,则将 Object2 的步代码放在步结束中)。

因此,当您的代码依赖于游戏中每个步骤的特定时间时,请使用下面列出的事件。简单地说,首先执行所有开始步骤事件,然后执行所有步骤事件,然后执行所有结束步骤事件,然后执行所有绘制事件,等等。

当所有步事件完成后,GameMaker 会在同一个游戏步骤中为所有实例执行绘制事件。在一个特定的事件(例如绘制结束)中,实例运行该事件的顺序取决于图层的顺序,例如深度最高的图层的实例最先绘制,深度最低的图层最后绘制。

注意 深度最高的图层(首先绘制)显示在房间编辑器的图层列表的底部,而深度最低的图层显示在顶部(因为它"更接近"查看器)。

每个绘制事件都按此顺序(基于 depth 值)绘制实例,然后继续到下一个事件,重复相同的实例顺序(例如,从"绘制开始"移动到"绘制",然后移动到"绘制结束")。

这是绘制事件的顺序:

有关这些事件如何与 GameMaker 的绘制相关的更多详细信息,请参阅绘制事件