对象编辑器

The Object Editor对象是我们用来控制游戏的各个方面和做特定事情的资源。大多数时候,它们有一个与之相关的精灵,以便你在游戏室中看到它们,但有时它们被用作 "幕后 "控制器,以做与用户有关的事情或用于计时,等等。它们可以被赋予行为,它们可以对某些事件作出反应,也可以对彼此作出反应,你在游戏中看到的大多数东西都是基于物体和它们的相互作用。现在,我们说 "基于",是因为你实际上并没有直接将物体放入游戏房间,而是将这些物体的实例放入游戏房间,它们基本上是物体资源的副本(或克隆,如果你愿意)。这是一件非常重要的事情,因为实例和对象不是同一种东西,它们各自有自己的一套可以影响它们的功能,所以要记住这一点。

为了阐明这一点,请考虑使用GameMaker制作的游戏。所有角色,怪物,球,墙壁等都是您在资源浏览器中创建的对象。然后您将对象拖到房间编辑器中的房间中,以创建从基本对象模板复制的实例。然后可以在编辑器本身或通过代码更改房间中的实例,以便可以缩放,或着色,或从"基础"对象修改其他细节。因此,当我们谈论影响或改变一个实例时,我们的意思是它影响房间中对象的一个特定副本。只有该单个实例受到影响,而所有其他实例都没有。但是,当我们谈论影响或改变对象时,我们的意思是,我们正在修改资产浏览器中的对象,我们对它所做的任何事情都将反映在从该点创建的所有实例中。因此,对象是实例的模板,而实例是我们放置在房间中以制作游戏的东西。

要在你的游戏中创建一个对象,你可以在资源浏览器上右击RMB Icon ,然后点击创建对象选项。这将打开本页面顶部的窗口,其中有以下几个部分。

详情详情

在这里你可以给你的对象一个名字。这个名字不应包含空格或未经授权的字符(只允许使用字母数字字符和下划线"_"),而且应该简短但易于记忆,以便以后当你可能有很多资源时,你可以很容易地识别它们。 当你可能有许多资源时,你可以很容易地识别它们。例如,许多人使用前缀或后缀来识别资源之间的差异,如"obj_Ship"或"Ship_obj"。

接下来你可以选择对象的精灵,如果你希望它有一个。用鼠标左键LMB Icon 点击精灵框,资源资源管理器将出现资源浏览器的所有可用精灵列表。

The Asset ExplorerYou然后可以选择要用于对象的精灵。为对象分配精灵后,您可以单击编辑精灵按钮Edit Sprite Icon更改精灵属性,或者-如果您没有对象的精灵,但希望创建一个-您可以单击添加精灵按钮Add Sprite Icon创建新的精灵资源并进行分配。

您还可以通过单击编辑图像按钮Edit Image Icon来编辑已分配的精灵资源图像。如果未设置外部编辑器,则会在图像编辑器中打开图像;如果路径首选项中提供了给定精灵类型,则会在外部编辑器中打开图像。

 

碰撞遮罩碰撞遮罩

在精灵分配区下面有一个按钮,可以选择一个特定的碰撞遮罩。默认情况下,一个物体会根据分配给它的精灵产生碰撞属性,但在某些情况下,你可能希望 碰撞是基于不同精灵的不同形状。例如,你可能有一个自上而下的游戏,主精灵有一个长方形的碰撞掩码,但为了使碰撞更平滑,圆形掩码可能更好。在这种情况下 你可以点击碰撞遮罩按钮并选择另一个精灵资源,所以现在对象的实例将绘制指定的精灵,但基于碰撞的遮罩精灵。你可以在碰撞的页面上找到更多关于碰撞 遮罩的更多信息,请参见精灵编辑器页面。

 

属性属性

这里你会看到你的对象有以下选项:

持久性和房间层持久性和房间层  

当您在房间中创建启用了持久化的实例时,会为其分配一个层或深度(具体取决于您创建对象实例时使用的函数)。当房间更改时,如果下面的房间没有与分配的名称或深度相同的层,则会为跨房间持久化的实例创建一个新层。如果在创建实例时指定了一个命名的层,则新层的名称也将与原始层相同,而如果为实例指定了深度,则新层将被命名为"_layer_XXX",其中"XXX"是用于为层指定唯一名称的十六进制值。这些层将从房间结束上的房间中移除。

有关层和持久化实例的另一点需要注意的是,如果您在创建时为实例分配了命名层,并且后续房间中有另一个同名层,则持久化实例将被分配到同名的层,而不考虑层的深度。

最后,如果持久化实例移动到与创建实例的深度相同的层所在的房间,则不会将其分配给该层。但是,将在相同深度创建一个新的层(遵循上面解释的命名约定)。

持久性和事件持久性和事件

如前所述,持久对象只会运行其 创建事件 一次,但它也会在适当的时间触发其游戏开始游戏结束房间开始房间结束事件。但是,如果您重新启动游戏(例如,使用game_restart()函数)所有持久对象将被移除,仅当游戏重新创建时才会存在。

还请注意,如果您停用持久对象,它将不再从一个房间传递到另一个房间,除非在触发房间结束事件之前重新激活。重新激活需要执行完整的游戏步骤,因此使用实际的房间结束事件不起作用,因为它不会为游戏提供重新激活对象的完整步骤,因此在将停用与持久对象一起使用时,您需要记住这一点,并相应地规划您的代码。

 

对象编辑器的最后一部分是不同的对象 选项,每个选项都在其页面上讨论,链接如下。