Complete Cocos Creator port with level bundles, themes, and tooling.

Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-16 15:30:58 +08:00
parent cba5105908
commit d393302388
6248 changed files with 17322729 additions and 11036 deletions

79
tools/levels-database.md Normal file
View File

@@ -0,0 +1,79 @@
# 关卡数据库 `levels-database.json`
## 单一数据源
| 文件 | 说明 |
|------|------|
| `assets/resources/level/levels-database.json` | **全部关卡**(增删查改改这个文件) |
| `assets/scripts/level/LevelDatabase.ts` | 加载与 CRUD API |
| `assets/scripts/level/LevelRegistry.ts` | 游戏内统一入口 |
每条关卡结构与 Unity 一致:
- `spawns``Levels*.cs`(运行时由 `GameManager` 生成 Player/Prop
- `ground` / `border` ← Unity `LevelN.prefab` Tilemap烘焙进 Cocos 预制体)
- `unityPrefab` ← 原 Unity 资源路径(便于对照)
## 关卡地图编辑面板(对齐 Unity Tile Palette
**`tools/level-map-editor.md`**:中间编辑关卡网格,右侧选择 `map-tiles/MapTile_*` 模块绘制,保存后烘焙预制体。
## 关卡地图预制体(与 Unity Instantiate 一致)
| 路径 | 说明 |
|------|------|
| `assets/resources/level-prefabs/Level{N}.prefab` | 地图视觉 + `LevelMapData`Ground/Border 子节点) |
| `assets/scripts/level/LevelMapData.ts` | 挂在预制体根节点,提供可走/阻挡逻辑 |
| `tools/bake_cocos_level_prefabs.py` | 从 `levels-database.json` 批量生成预制体 |
运行时 `GameManager` 只做:
1. `resources.load('level-prefabs/LevelN')``instantiate`
2. 从预制体 `LevelMapData` 读取 `ground` / `border`
3.`spawns` 生成角色与道具
**不再**用代码 `drawGridDebug` 拼地图。
修改 JSON 后需重新烘焙:
```bash
python3 tools/bake_cocos_level_prefabs.py \
--db assets/resources/level/levels-database.json \
--out-dir assets/resources/level-prefabs
```
## 贴图(角色 / 砖块)
从 Unity `Assets/Texture` 导入:
```bash
python3 tools/import_unity_textures.py --unity-root "/path/to/主站"
# Creator 刷新 textures 后:
python3 tools/fix_tile_texture_metas.py
```
目录与主题:`textures/default``silu``chinese``redArmy``numMan``snow``sanxing`
## 从 Unity 重新导出
```bash
cd /path/to/cocos/tfrh001
python3 tools/export_all_levels.py \
--unity-root "/path/to/主站" \
--output assets/resources/level/levels-database.json
```
调试可加 `--limit 50` 只导出前 50 关。
## 增删查改示例(代码)
```typescript
import { getLevelConfig, setLevel, removeLevel, addLevel, getLevelIds } from './level/LevelRegistry';
const cfg = getLevelConfig(3);
setLevel({ ...cfg!, levelID: 99, spawns: [...] });
removeLevel(99);
console.log(getLevelIds());
```
直接编辑 JSON 后,在 Cocos 中刷新资源并重新预览即可。