From 456f9f02a3d1e96a21ce53e8ddb9cc8a0381e3a8 Mon Sep 17 00:00:00 2001 From: Michael Skyba Date: Sat, 1 Feb 2025 09:11:35 -0500 Subject: [PATCH] tools/extractor.py: only access .path_id and .type.name on object reader Currently there is an `obj = obj.read()` overwrite that changes the object reader to a direct object, but some other lines still expect the original object reader --- UnityPy/tools/extractor.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index 16a13f6c..dc9d58aa 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -59,12 +59,12 @@ def export_obj( return [] if append_name: - fp = os.path.join(fp, obj.m_Name if getattr(obj, "m_Name") else obj.type.name) + fp = os.path.join(fp, obj.m_Name if getattr(obj, "m_Name") else obj.object_reader.type.name) fp, extension = os.path.splitext(fp) if append_path_id: - fp = f"{fp}_{obj.path_id}" + fp = f"{fp}_{obj.object_reader.path_id}" # export return export_func(obj, fp, extension) @@ -261,10 +261,10 @@ def exportTexture2D(obj: Texture2D, fp: str, extension: str = ".png") -> List[Tu if obj.m_Width: # textures can be empty obj.image.save(f"{fp}{extension}") - return [(obj.assets_file, obj.path_id)] + return [(obj.assets_file, obj.object_reader.path_id)] def exportGameObject(obj: GameObject, fp: str, extension: str = "") -> List[Tuple[SerializedFile, int]]: - exported = [(obj.assets_file, obj.path_id)] + exported = [(obj.assets_file, obj.object_reader.path_id)] refs = crawl_obj(obj) if refs: os.makedirs(fp, exist_ok=True)