Agent Skills
返回列表
🤖

Godot 资源数据建模

AI Agent 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 将 @user_3c6cb52e/godot-resources-778k 安装到你的 AI 助手中。

技能介绍

它解决什么问题

把物品、属性、敌人配置这些游戏数据硬编码在脚本里,改动一次就要翻代码、重新编译,策划也无法直接调参数。这个技能教你用 Godot 4.x 的 Resource 体系把数据变成可复用的外部资产:数据存在 .tres 或 .res 文件里,在 Inspector 面板中直接编辑,节点通过引用挂载,运行时按需加载。面向 Godot 4.3+。

核心能力与工作流

  • 定义资源类:用 class_name 声明 Resource 子类,字段用 @export 暴露,之后资源类会出现在编辑器的 "New Resource" 对话框里,也能直接作为其他节点的导出类型。
  • 实例化为文件:在 FileSystem 面板把资源存成 .tres(文本格式,适合 diff 评审)或 .res(二进制,更小更快),在 Inspector 里填字段,无需写代码。
  • 挂载到节点:节点上用 @export var data: ItemResource 或数组类型 @export var loot: Array[ItemResource] 引用资源实例。
  • 运行时加载:路径固定用 preload,路径可变用 load/ResourceLoader.load,大型资产配合线程加载。
  • 保存与复制:运行时生成或修改的资源用 ResourceSaver.save 落盘;修改共享资源前必须先 duplicate(true)。

适用边界与坑点

  • 共享引用陷阱:一个 .tres 被多个节点引用时是同一个对象,运行时直接改会波及所有使用者并污染文件内容,必须先 duplicate。
  • class_name 是必须的:没有它,类不会出现在编辑器新建资源对话框和 @export 类型列表里。
  • 导出后 res:// 只读:运行时写入数据要放 user://,ResourceSaver.save 到 res:// 只在编辑器里有效。
  • 资源不序列化节点:Resource 只存数据,引用场景要用 PackedScene,不要把活跃节点塞进资源里。
  • 避免循环引用:A 持有 B、B 又持有 A 时保存/加载可能失败,保持数据图为无环,或用 ID 查表。
  • preload 与 load 的取舍:preload 要求常量路径并随脚本加载;load 支持运行时变路径,加载前用 ResourceLoader.exists() 检查。
  • 别往 .tres 写机密:文本格式会原样打进发行包。
  • 别用错场景:节点/场景结构属于 godot-nodes-scenes;保存玩家运行进度属于 save-systems;需要 C# 变体则看 godot-csharp。

使用场景

  • 你在做 RPG,需要把物品、武器属性、敌人配置统一存成数据文件,方便美术和策划不改代码就能调整。
  • 数值策划要在 Inspector 里直接修改掉落表和对话行的内容,避免每次改数值都找程序改代码重新编译。
  • 你希望游戏运行时能根据存档或配置动态加载和保存某些配置资源,而不是启动时全部硬编码进脚本。
  • 关卡设计里要把箱子、机关、刷怪点等元数据放到节点上作为引用,运行时根据该资源生成对应逻辑。

适合人员

  • Godot 独立开发者,希望把游戏配置从脚本中剥离,交给策划或美术直接在编辑器里维护。
  • 数值策划,负责频繁调整属性表、掉落表、对话内容,需要一个不用写代码的编辑入口。
  • 关卡策划,需要在场景节点上挂载可复用数据资源,并希望运行时动态读取或修改这些数据。
  • 技术美术或工具链开发者,想为团队建立一套标准化的游戏数据资产结构,方便协作和版本管理。