Skip to content

UnityPyでアセットを分解する

システムPython環境を壊すのも困るので、失敗しないように以下ではDockerコンテナの中で実行する手順を示す。

Terminal window
apt-get update
apt install python3 python3-pip python3-venv

素朴に UnityPyREADME に書かれている手順を試すと、Ubuntu 24.04ではシステム環境に入れるなと警告が出たので、venv を使って隔離した環境にインストールする。

Terminal window
python3 -m venv unipy
cd unipy
source bin/activate
pip install UnityPy

tools/extractor.py が用意されているけれど、これ単体では動作しないので、main の処理を実装していく。

Terminal window
cp lib/python3.12/site-packages/UnityPy/tools/extractor.py .

コードの差分はこの程度。

--- extractor.py 2025-09-24 10:00:29.365632601 +0900
+++ extractor.py 2025-09-24 10:08:42.981609965 +0900
@@ -345,3 +345,6 @@
yield from flatten(elem.values()) # type: ignore
else:
yield elem
+
+extract_assets("a.cab", "out")

ファイル名は固定値だけど頻繁に実行するものではないので、一旦はこれでいい。あとは実行するだけでファイルが出力される。

Terminal window
python extractor.py