BurningTimesAi/공유/기획/FirstRising/맵/tools/prop_count_scene.py

21 lines
1.3 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
# 맵 씬 파일에서 블렌더 소품 프리팹(FRProp_)이 몇 번 쓰였는지 센다(프리팹 guid 로 찾는다).
import re, io, sys, json, os, glob
maps = ["Graveyard","RuinedKeep","SpiderCave","PlagueCatacomb","HarborExecution","ScorchedDesert"]
theme = {"Graveyard":"Graveyard","RuinedKeep":"Keep","SpiderCave":"Cave","PlagueCatacomb":"Catacomb","HarborExecution":"Harbor","ScorchedDesert":"Desert"}
root = r"C:\BurningTimes\FirstRising"
for m in maps:
scenes = glob.glob(os.path.join(root, "Assets/Scenes/Maps", m, "*.unity"))
text = ""
for s in scenes:
text += io.open(s, encoding="utf-8", errors="ignore").read()
pdir = os.path.join(root, "Assets/BurningTimes/Maps/_Shared/Props", theme[m], "Prefabs")
out = []
total = 0
for meta in sorted(glob.glob(os.path.join(pdir, "*.prefab.meta"))):
guid = re.search(r"guid: ([0-9a-f]{32})", io.open(meta, encoding="utf-8").read()).group(1)
n = len(re.findall(r"m_SourcePrefab: \{fileID: \d+, guid: %s" % guid, text))
name = os.path.basename(meta)[:-len(".prefab.meta")].split("_", 2)[2]
out.append((name, n)); total += n
print("%-16s 씬 %d개 · 새 소품 %3d개 · %s" % (m, len(scenes), total, " ".join("%s×%d" % x for x in sorted(out, key=lambda x: -x[1]))))