68
tools/import_unity_levels_91601_93430.sh
Executable file
68
tools/import_unity_levels_91601_93430.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
# 从 Unity 主站导入 91601–93430 关卡(地图 + spawns + 主题 + 烘焙预制体)
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
UNITY_ROOT="${UNITY_ROOT:-/Users/liuyufei/tfrh/主站文件/主站}"
|
||||
DB="$ROOT/assets/level-data/levels-database.json"
|
||||
PREFAB_OUT="$ROOT/assets/bundle-level-prefabs/level-prefabs"
|
||||
MIN_ID=91601
|
||||
MAX_ID=93430
|
||||
|
||||
cd "$ROOT"
|
||||
|
||||
echo "==> [1/5] 导出 Unity 关卡 JSON (${MIN_ID}-${MAX_ID})"
|
||||
python3 tools/export_all_levels.py \
|
||||
--unity-root "$UNITY_ROOT" \
|
||||
--output "$DB" \
|
||||
--merge-into "$DB" \
|
||||
--min-level-id "$MIN_ID" \
|
||||
--max-level-id "$MAX_ID"
|
||||
|
||||
echo "==> [2/5] 导入主题贴图(silu/snow/sanxing/chinese/redArmy/numMan)"
|
||||
python3 tools/import_unity_textures.py \
|
||||
--unity-root "$UNITY_ROOT" \
|
||||
--themes silu,snow,sanxing,chinese,redArmy,numMan || true
|
||||
|
||||
echo "==> [3/5] 修复砖块 meta + 主题调色板"
|
||||
python3 tools/fix_tile_texture_metas.py || true
|
||||
python3 tools/build_theme_palettes.py --unity-root "$UNITY_ROOT" || true
|
||||
python3 tools/sync_theme_nprop_ground.py 2>/dev/null || true
|
||||
|
||||
echo "==> [4/5] 烘焙 Cocos 关卡预制体 (${MIN_ID}-${MAX_ID})"
|
||||
python3 tools/bake_cocos_level_prefabs.py \
|
||||
--db "$DB" \
|
||||
--out-dir "$PREFAB_OUT" \
|
||||
--min-level-id "$MIN_ID" \
|
||||
--max-level-id "$MAX_ID"
|
||||
|
||||
echo "==> [5/5] 校验"
|
||||
python3 - <<'PY'
|
||||
import json
|
||||
from pathlib import Path
|
||||
from collections import Counter
|
||||
db = json.loads(Path("assets/level-data/levels-database.json").read_text())
|
||||
themes = Counter()
|
||||
empty = 0
|
||||
missing = 0
|
||||
kinds = Counter()
|
||||
for lid in range(91601, 93431):
|
||||
L = db["levels"].get(str(lid))
|
||||
if not L:
|
||||
missing += 1
|
||||
continue
|
||||
if not L.get("spawns"):
|
||||
empty += 1
|
||||
themes[L.get("theme", "?")] += 1
|
||||
for s in L.get("spawns") or []:
|
||||
kinds[s.get("kind", "?")] += 1
|
||||
prefabs = list(Path("assets/bundle-level-prefabs/level-prefabs").glob("Level*.prefab"))
|
||||
in_range = [p for p in prefabs if 91601 <= int(p.stem.replace("Level", "")) <= 93430]
|
||||
print(f"missing: {missing}/1830")
|
||||
print(f"spawns empty: {empty}/1830")
|
||||
print(f"themes: {dict(themes)}")
|
||||
print(f"spawn kinds: {dict(kinds)}")
|
||||
print(f"prefabs in range: {len(in_range)}/1830")
|
||||
PY
|
||||
|
||||
echo "Done."
|
||||
Reference in New Issue
Block a user