# 告别手动复制：程序与美术的无缝协作之道

## 传统工作流的“噩梦”

想象一个经典的团队协作场景：

> 美术小红：我做好一个新的怪物模型 `golem.vb`，放在地图里了！
>
> 程序小明：收到！

然后，小明在代码中自信地写下：

```typescript
world.createEntity({
  // ...
  mesh: "model/golen.vb", // 手动输入模型路径（但拼错了）
});
```

他进入游戏，却发现模型没有显示。经过一番沟通，才发现小明在写代码时，模型名字写成了 `gelen`。

第二天，小红又优化了模型，并重命名为 `stone_golem.vb`，但只在聊天群里说了一声，正在专心写代码的小明没有注意到……

这种依赖口头沟通、手动复制粘贴资源路径的工作方式，是团队开发中的效率杀手和 Bug 温床。如果有一种方法，能让程序实时地、精确地知道编辑器里到底有哪些资源，那该多好？

ArenaPro 的「资源同步」功能，就是为了解决这个协作难题而生的。

## 魔法揭秘：在代码中“看见”编辑器里的所有资源

「资源同步」功能做了件非常聪明的事：

它会扫描你当前项目所连接的地图里所有的资源（模型、图片、音效等），然后自动在你的代码项目里，生成一个实时更新的「项目资源清单」（一个名为 `types/GameAssets.d.ts` 的特殊文件）。

这个「清单」一旦生成，VS Code 就拥有了你所有资源的“记忆”。从此，你的编程体验会发生质的飞跃：

1. 路径自动补全：当你需要输入资源路径时，VS Code 会像“智能助理”一样，弹出一个下拉列表，包含所有可用的资源。你只需用键盘选择，告别手动输入。
2. 实时错误检查：如果你引用的资源被美术同学删除或重命名了，VS Code 会立刻在那行代码下划出一条红色的波浪线，告诉你：“嘿，这个资源找不到了！”

你再也不用等到进入游戏，才发现资源加载失败了。

## 现代化的工作流：一键同步，告别沟通成本

操作非常简单，只需养成一个简单的习惯。

### 何时需要同步？

把「资源同步」想象成一个“刷新”按钮。每当编辑器里的资源发生了变化，你就需要按一下它来更新你本地的「资源清单」。

最常见的场景是：

- 当你的美术/策划同学在编辑器里添加、删除或重命名了任何资源后。
- 当你刚从 Git 拉取了最新的项目，不确定资源是否有变动时。

### 如何“同步资源”？

我们提供了多种方式来刷新你的「资源清单」：

- 快捷键（推荐）：按下 `Alt + Y`
- 命令面板（F1）：输入并运行「同步地图资源」

## 自动同步与静默模式

为进一步降低协作成本，ArenaPro 新增了“自动同步”能力：

- 自动同步（后台定时）

  - 插件会在后台按固定间隔自动检测资源变化，并尝试更新 `types/GameAssets.d.ts`。
  - 间隔由设置项 `nodeJsTool.GameAssetsSync` 控制（单位：分钟）。
    - 0 或不配置：关闭自动同步
    - \> 0：按设定分钟周期检查
  - 修改该设置后会即时生效，无需重启插件。

- 静默同步

  - 仅当检测到本地与云端存在差异，需要覆盖本地 `GameAssets.d.ts` 时，才会弹出一次确认对话框，避免误覆盖。

- 首次生成
  - 若项目中尚未存在 `types/GameAssets.d.ts`，自动同步会在检测到资源后自动生成。

## 常见问答（FAQ）

- Q：我不想要后台自动同步，怎么办？

  - A：将 `nodeJsTool.GameAssetsSync` 设为 0 即可关闭。

- Q：自动同步会打断我的编码吗？

  - A：不会。后台检测为静默模式，不会弹出进度或信息提示；只有在需要覆盖本地文件时，才会弹出一次确认框。

- Q：为什么有时检测到差异但没有更新？

  - A：如果只是注释或时间戳不同，系统会忽略这类差异，不会触发更新。

- Q：如何手动立即同步？
  - A：使用快捷键 `Alt + Y` 或命令面板运行「同步地图资源」。

## 小结

通过一键同步 + 后台自动同步，你可以在 VS Code 中“看见”编辑器里的所有资源，享受路径自动补全与实时错误检查带来的效率提升。团队协作从此更顺畅，开发体验更安心。
