与Godot中的任何对象一样,用户也可以编写资源脚本。资源脚本继承了在对象属性和序列化文本或二进制数据(.tres,.res)之间自由转换的能力。它们还继承了Reference类型的引用计数内存管理。
与JSON、CSV或自定义TXT文件等替代数据结构相比,它有许多明显的优势。用户只能将这些资产以Dictionary(JSON)或File 的形式导入来解析。资源的与众不同之处在于其继承了Object(对象)、Reference(引用)和Resource(资源)的功能:
- 它们可以定义常量,所以不需要其他数据字段或对象的常量。
- 它们可以定义方法,包括属性的setter/getter方法。这样可以对底层数据进行抽象和封装。如果资源脚本的结构需要改变,使用资源的游戏也不需要改变。
- 它们可以定义信号,所以Resource可以触发对它们管理的数据变化的响应。
- 它们有定义的属性,所以用户100%知道它们的数据会存在。
- Resource自动序列化和反序列化是Godot Engine的内置功能。用户不需要实现自定义逻辑来导入/导出资源文件的数据。
- 资源甚至可以递归地序列化子资源,这意味着用户可以设计更复杂的数据结构。
- 用户可以将资源保存为版本控制友好的文本文件(.tres)。在导出游戏时,Godot会将资源文件序列化为二进制文件(.res),以提高速度和压缩率。