其他事件

The Other Events

本页介绍了在对象编辑器中的其他事件类别下收集的每个不同事件:

 

房间外房间外 

此事件在实例离开房间时触发,并基于对该实例的指定精灵 (及其属性) 所做的检查,因此,即使您已将图像 X 或 Y 比例设置为除 1 以外的值,此事件只有当整个精灵离开屏幕时才会被触发。如果实例没有精灵,则使用实例的位置,并且当它的 X 或 Y 位置在房间外时,它也将触发事件。这个事件通常用于像子弹这样的东西,一旦它们离开房间,它们就会被摧毁,这样你就不会有数百万颗子弹无限飞走,导致你的游戏变慢。请注意,此事件仅触发一次当实例最初离开房间时。

 

相交边界相交边界

当实例 " 触摸 " 房间的内部边缘时触发此事件,并且与外部房间事件一样,基于对实例的分配精灵所做的检查,因此即使您已将图像 X 或 Y 比例设置为除 1 以外的值,当精灵的一部分与房间边界相交时仍会触发此事件。如果实例 没有 精灵,则使用实例的位置,并且其 X 或 Y 位置与房间边界然后它也会触发事件。您可以使用这个事件来做一些事情,比如告诉一个实例再次 " 反弹 " 回房间,而不是出去。

 

视图视图

相机视图通常在房间编辑器中定义,用于在任何时候只显示大房间的一小块区域。此事件类别有两个独立的子类别 ( 外部视图交叉边界 ),其中八个不同的事件中的每一个对应于八个可用的视图端口。这两个类别的功能与各自的房间事件完全相同,仅将摄像机视图的边界作为实例检查的对象而不是房间。

 

游戏开始游戏开始

此特殊事件在整个游戏中仅触发一次,并且仅适用于事件中放置了操作或代码的实例。这些实例必须出现在游戏的第一个房间,并且已经放置在房间编辑器中,而不是比使用代码或操作动态创建的要多。应该注意的是,此事件发生在所有实例的创建事件之后,因此可以包含具有先前在该事件中定义的变量的代码或操作。此事件通常仅在一个"控制器"对象中定义,通常用于初始化全局变量、启动音乐、从文件中读取以及通常仅在游戏开始时完成一次的任何其他事情。

 

游戏结束游戏结束

类似于上面提到的游戏开始事件,这个事件在整个游戏中只触发一次,也就是在游戏窗口实际关闭之前。同样,对于一个带有这个事件的实例,它必须在游戏关闭时在房间里做任何事情。请注意,这个事件实际上只适用于 Windows,作为移动的设备的 Ubuntu(Linux) 和 macOS 游戏可能只是关闭游戏,而不给 GameMaker 调用此事件的机会。对于使用 HTML5 模块制作的浏览器游戏,此事件应在游戏选项卡或浏览器关闭时起作用,但并非所有浏览器都支持此功能 (在撰写本文时,Firefox、Chrome 和 Safari 都正常运行) 所以在使用它时必须小心。通常你会使用这个事件来保存数据。

 

房间开始房间开始

当房间开始时,最初在房间中的所有实例都会发生此事件。请注意,它发生在创建事件 之后 ,因此可能取决于之前在该事件中定义的变量和事物。

 

房间结束房间结束

当房间结束时,房间中的所有实例都会发生此事件。此事件对于关卡结束后的 " 清理 " 非常有用,例如您可以在此处删除加载的资源,或者删除粒子系统以防止内存泄漏等…

 

动画结束 动画结束

GameMaker 中,精灵不是静态的东西,因为它们可以有子图像,并以不同的速度进行动画制作。动画的每一帧 (称为子图像) 都有自己的编号,从 0 开始,可以在代码中或通过操作进行检查,但是有时候你真正需要知道的是动画什么时候结束。此时触发此事件,就在动画结束时,当子图像索引显示已到达最后一帧时。这个活动真的很有用对于许多事情,例如爆炸对象,您可以将实例设置为在到达动画的最后一帧时销毁自己。

 

动画更新动画更新

此事件仅设计用于骨骼动画功能。每当在对象中绘制精灵时,在已分配骨骼动画精灵的对象中触发此事件。它允许您在绘制之前更改骨骼精灵(例如骨骼方向)。

 

动画事件动画事件

此事件仅设计用于骨骼动画函数。它在指定了骨骼动画精灵的对象中触发,并且该对象使用指定精灵的默认绘制,或者通过 draw_self() 绘制精灵。它不会在以其他方式绘制的骨架动画精灵上触发。该事件旨在捕获和传输分配给精灵动画中特定事件的数据,在编辑器中定义用于创建它们。

当动画事件被触发时,一个特殊的 DS Map 将被创建,称为 event_data map(与我们为一个事件创建的 async_load map 非常相似)。这个 map 将包含以下所有键/值对,您可以解析这些键/值对以获取有关事件的信息:

 

路径结束 路径结束

路径 可以是制作任何游戏的重要组成部分,无论是塔防类型的游戏,还是枪战或其他游戏,当一个实例到达时,它通常非常重要它道路的尽头。此事件检测到这一点,并在它发生时触发,允许您添加代码或操作来处理情况,例如在塔防游戏中,您将使用它来破坏实例并删除生命值从目标对象指向。

 

用户事件 用户事件

这些特殊事件不是由 GameMaker自 动触发的,而是必须在游戏运行时由您使用代码或操作隐式调用。总共有 16 个用户事件,它们可以包含代码或操作,并且可以在游戏循环中的任何时间调用,这使得它们对于创建您自己的事件非常有用,当决定时发生。

 

广播消息 广播消息

每当精灵或序列生成广播消息字符串时,都会触发此事件。有关详细信息,请参阅 广播消息 上的页面。

壁纸事件壁纸事件

壁纸事件由Wallpaper Companion应用程序触发。有关详细信息,请参阅Wallpaper Events页面。