冻结实例


GameMaker Studio 2 提供了 “关闭” 实例的可能性,从而不再以任何方式处理它们。从技术上讲,它们实际上已经不存在了,除了作为冻结流程本身中的指针之外,这意味着在再次激活失活的实例之前,无法以任何方式对其进行操作或更改。因此,在使用这些函数时要非常小心,因为如果使用不当,特别是在使用保持物体时,它们可能会导致问题,因为一个被冻结的保持物体将不会被移动到下一个房间,除非它首先被重新激活(有效地将其从游戏中删除)。

通常不需要在游戏的每步都冻结实例,这实际上会导致游戏延迟和运行缓慢。相反,建议你仅在计时器中的每几个步中运行这些函数(例如),或者如果视图已更改位置,并且尤为重要的是在绘制事件中不要使用这些函数,因为这可能导致游戏中出现严重错误。

已停用的实例在游戏中实际上不再存在,但是单个实例仍然可以访问其变量。但是你不能使用 with(object)with(instance),而是必须使用以下格式的唯一 ID 直接访问实例:

val = inst.variable;

在上面的示例中,“inst” 将是一个保存已停用实例的 id 的变量,这是在未事先激活的情况下可以引用已停用的实例的唯一方法。

注意:如果你停用了房间开始上的实例(即:从房间创建代码,或从房间内实例的实例创建事件),那么从房间编辑器中放置在房间内的所有实例在冻结之前仍将运行它们的创建事件。
警告:冻结物理的实例不会阻止它们的支架(fixtures)在物理模拟中进行交互。为此,你应在激活 / 冻结实例时将其 phy_active 变量设置为 true 或 false。

以下用于冻结实例的函数: