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:
37
tools/export_unity_prefab_maps.py
Normal file
37
tools/export_unity_prefab_maps.py
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python3
|
||||
"""从 Unity Level{N}.prefab 解析 Tilemap(Ground / Border)格子数据。"""
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def parse_tilemap_layer(text: str, layer_name: str) -> dict[str, int]:
|
||||
parts = re.split(r"(?=--- !u!1 &)", text)
|
||||
for part in parts:
|
||||
if f"m_Name: {layer_name}" not in part or "Tilemap:" not in part:
|
||||
continue
|
||||
tiles: dict[str, int] = {}
|
||||
for m in re.finditer(
|
||||
r"first: \{x: (-?\d+), y: (-?\d+), z: 0\}[\s\S]*?m_TileIndex: (\d+)",
|
||||
part,
|
||||
):
|
||||
x, y, ti = int(m.group(1)), int(m.group(2)), int(m.group(3))
|
||||
tiles[f"{x},{y}"] = ti
|
||||
return tiles
|
||||
return {}
|
||||
|
||||
|
||||
def parse_level_prefab(prefab_path: Path) -> dict:
|
||||
if not prefab_path.is_file():
|
||||
return {}
|
||||
text = prefab_path.read_text(encoding="utf-8")
|
||||
g_raw = parse_tilemap_layer(text, "Ground")
|
||||
b_raw = parse_tilemap_layer(text, "Border")
|
||||
if not g_raw and not b_raw:
|
||||
return {}
|
||||
ground = {
|
||||
k: ("JumpBlock" if ti == 1 else "Baseblock") for k, ti in g_raw.items()
|
||||
}
|
||||
border = {k: True for k in b_raw}
|
||||
return {"ground": ground, "border": border}
|
||||
Reference in New Issue
Block a user