对象和实例

有了你到目前为止看到的资源,你可以在游戏资源浏览器中添加一些漂亮的图像和声音,但它们还不能在游戏本身做任何事情!为此,我们需要 GameMaker 中最重要的资源,对象资源。物体是一种特殊的资源,我们用它来控制游戏的各个方面,并做一些特定的事情。大多数时候,它们都有一个与之相关的精灵,这样你就可以在游戏室里看到它们了,但有时它们也会被用作"幕后"的控制器对象,来做一些事情,比如跟踪统计数据,或者设置剪辑场景的时间等等。对象可以被赋予行为,它们可以对某些事件以及彼此做出反应,你在游戏中看到的大多数东西都是基于对象及其与用户和彼此的交互。

现在,我们不能不讨论对象而不讨论 实例 。在一款由 GameMaker 制作的游戏中,角色、怪物、球、墙等。你在游戏中看到的其实都是 实例 。实例本质上是在资源浏览器中找到并放置在房间中的对象的“副本”(将对象视为实例的 模板 )。因此,当我们谈论影响或改变实例的东西时,我们的意思是房间中某个对象的一个特定副本受到影响,而其他所有副本都不受影响;但当我们谈论影响或改变对象时,我们对它所做的任何事情也将反映在从该点开始创建的所有实例中。因此, 对象是实例的模板,实例是我们放置在房间中以制作游戏的东西

要创建新的对象资源,与其他所有资源相同,只需在对象资源文件夹上单击鼠标右键Icon RMB并选择创建(或在资源浏览器中的任意位置单击鼠标右键并选择创建对象)。

The Object Editor

这是 对象编辑器 窗口,其中显示了当前的对象属性,您应该做的第一件事是命名对象,再次使用类似 "obj_" 的前缀或其他一些标识符。通常,一个对象要绘制任何内容并注册与其他对象实例的碰撞,需要为其指定一个精灵,该精灵是使用 Add Sprite Icon 按钮添加的。这将打开 资源管理器 ,您可以在其中选择要使用的精灵 (也可以将精灵从资源浏览器拖放到对象编辑器上以进行指定):

The Asset Explorer

如果您还没有合适的精灵,可以单击LMB Icon新建精灵按钮New Sprite Icon以创建新的精灵资源并根据需要对其进行编辑,就像您通过标准的精灵创建选项创建了资源一样,只是现在它将自动指定给您开始创建它时已打开的对象。选择精灵后,还可以单击LMB Icon编辑精灵Edit Sprite Icon编辑图像按钮Edit Image Icon来编辑精灵本身的图像或精灵资源。这比先在资源浏览器中找到精灵,然后指示您要编辑它要快得多。

添加或创建精灵后,您可以更改其他几个对象属性,例如它是否应该可见,或者它应该具有哪种碰撞遮罩。对于简单的游戏,您可能不需要在此处更改任何内容,现在可以继续向对象添加事件

事件是游戏循环中谨慎的时刻,事情是根据你为它们编写的程序来实现的。GameMaker 处理这些事件的循环 -- 从房间开始到结束的那一刻,有一个运行游戏循环,其中每一步都会运行一系列事件,您可以选择在响应这些事件的实例中放置 GML 代码或 GML 可视化动作 ( 步骤 是游戏时间中的一个时刻,由游戏速度设置决定-也称为 "帧")。

要添加事件,请单击添加事件按钮上的LMB Icon

The Object Editor Events

您可以在上面看到所有不同的事件类别,其中一些包含其他子类别。我们不会在这里介绍所有的事件,但我们将简要介绍五个最重要的事件:

Icon Create EventCreate Event此事件在首次创建对象的实例时发生,并且是进入房间时在已通过房间编辑器放置到房间中的实例中发生的第一件事。这意味着该事件是初始化变量、开始时间线、设置路径等的理想场所。并执行通常只需执行一次或仅当实例首次出现在房间中时才执行的任何其他操作。
Icon Step EventStep EventGameMaker 根据游戏速度将游戏时间分成几个步骤,以定义每秒应该有多少个这样的步骤。步骤,基本上是一个循环,在游戏运行时,所有事件都会被检查并根据需要触发,所以可以想象,步骤事件是在实例存在的情况下,游戏的每个步骤都被检查的事件。请注意,步骤事件类别有三个子类别,可在实例中“微调”计时,但通常您将使用最多的主步骤事件。
Icon Collision EventCollision Event显然,在制作游戏时,知道对象的两个 (或更多) 实例发生碰撞是非常重要的,为此我们有碰撞事件。这是一个事件,您可以将其放置在对象中,然后指定应针对哪个其他对象检查碰撞。添加事件并选择要检查的对象后,可以添加 GML 代码或 GML 可视化来解决冲突。
Icon Draw EventDraw Event在绘制事件类别中有多个不同的绘制事件,但您使用最多的是位于顶部的事件,简称为"绘制"。与步事件一样,这个常规的抽签事件将被称为每个游戏帧,但它有两种不同的工作方式。第一种情况是当您没有将此事件添加到对象时...。如果没有指定绘制事件,则 GameMaker 将默认使用对象中其他位置应用的任何变换(如更改其大小或Alpha混合)绘制指定给对象的精灵,因此即使在事件列表中没有列出绘制事件,它仍在运行,并且当实例放置在房间中时仍将绘制到屏幕上。第二种工作方式是当您添加事件本身并在其中包含任何GML或GML可视内容时。在事件中添加一些内容会告诉 GameMaker "我想控制您为该对象的实例绘制的内容",它会完全覆盖默认绘制。这意味着您可以指定一个指定了精灵的对象,然后将绘制事件设置为绘制文本,并且不会绘制精灵,因为您没有告诉 GameMaker 绘制它,尽管文本将会绘制。
Icon Destroy EventDestroy Event此事件是销毁实例时要执行的最后一个事件。在将行为添加到对象时,它经常被忽略,但它可以非常有用-例如,在敌人被击毙时创建爆炸或粒子效果,或在房间的另一部分重新生成对象的新实例,甚至用于为分数增加分数。

有关所有不同活动的详细信息,请参阅此处

然后,您可以单击列表中的事件将其添加到对象中。

此时,可能会要求您在 GML 可视化GML 代码 之间进行选择。有关详细信息,请参阅 GameMaker 语言

添加事件将打开 GML 代码GML 可视化 编辑器,具体取决于您要创建的事件类型。在此窗口中,您现在可以添加每次在游戏循环中触发该事件时希望执行的代码或操作。

Object Editor Chained Windows

您可以从下面给出的两个页面中找到有关在对象事件中使用 GML 的详细信息:

您可以在此处找到对象编辑器所有不同部分的完整说明:

本指南的下一部分将介绍另一种资源类型,即序列...