内存管理

游戏编程是编码的一部分,也是内存管理的一部分。
了解内存管理可以帮助您了解游戏出现问题的地方。此类问题可能包括延迟或随机游戏冻结。

参考类

在 Godot GDScript 中,所有没有通过extends关键字定义继承的类默认都从引用类继承。

  1. # Omitting the extends keyword is the same as the following
  2. extends Reference

该类Reference是任何保持引用计数的游戏对象的基类。
引用计数是一种内存管理技术。
这意味着该类将在不再使用时从内存中释放自己。
这是因为当引用计数为 时,一个对象将从内存中释放0。

项目等级

如果您想让游戏对象即使不再被使用也留在内存中,您必须从Object该类继承。

  1. extends Object

要从内存中释放从对象类继承的游戏对象,您必须调用该free方法。
Godot 的许多内置类都继承自 Object 类。这包括 Node 类和 Node2D 类。
初学者在使用 Godot 编程时遇到的许多问题是从内存中释放节点。

  1. # An example of freeing a Sprite Node from memory
  2. # Sprite Node ultimately inherits from Object class
  3. extends Sprite
  4. class_name MainCharacter
  5. _exit_tree():
  6. free() # unsafe

从内存中删除的另一种方法:

  1. # An example of freeing a Sprite Node from memory
  2. # Sprite Node ultimately inherits from Object class
  3. extends Sprite
  4. class_name MainCharacter
  5. _exit_tree():
  6. queue_free() # safe