何时以及如何避免对所有内容使用节点¶
节点的生产成本很低,但即使它们也有其局限性。一个项目可能有数万个节点,所有节点都在执行任务。但是,它们的行为越复杂,每种压力对项目性能的影响就越大。
godot为创建节点使用的API提供了更轻量的对象。在设计如何构建项目的特性时,一定要记住这些选项。
Object :终极轻量对象,原始对象必须使用手动内存管理。也就是说,创建一个自己的自定义数据结构,甚至节点结构,并不太困难,它也比 Node 班级。
例子: 见 Tree 节点。它支持对行数和列数任意的内容表进行高级别的自定义。它用来生成可视化效果的数据实际上是 TreeItem 物体。
优势: 将API简化为较小范围的对象有助于提高其可访问性,从而缩短迭代时间。与其使用整个节点库,不如创建一个对象的缩写集,从中节点可以生成和管理适当的子节点。
注解
处理它们时应小心谨慎。可以将对象存储到变量中,但这些引用可能在没有警告的情况下无效。例如,如果对象的创建者决定从任何地方删除它,当下一个访问它时,这将触发一个错误状态。
Reference :只比对象稍微复杂一点。它们跟踪对自身的引用,只在不存在对自身的进一步引用时删除加载的内存。在大多数需要自定义类中的数据的情况下,这些都很有用。
例子: 见 File 对象。它的功能和普通对象一样,只是不需要自己删除它。
优势: 与对象相同。
Resource :只比参考稍微复杂一点。它们具有将对象属性序列化/反序列化(即保存和加载)到/从godot资源文件中的天生能力。
例子: 脚本、packedscene(用于场景文件)和其他类型,如 AudioEffect 课程。每一个都可以保存和加载,因此它们从资源扩展。
优势: 很多都有 already been said 在 Resource 与传统数据存储方法相比的优势。但是,在使用资源而不是节点的上下文中,它们的主要优势在于检查器的兼容性。虽然几乎和对象/引用一样轻,但它们仍然可以在检查器中显示和导出属性。这使得它们能够实现与可用性方面的子节点非常相似的目的,但是如果一个人计划在其场景中拥有许多这样的资源/节点,那么也可以提高性能。