diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 4b02858e..d2881a4b 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -305,7 +305,13 @@ def _try_monobehaviour_node(self, base_node: TypeTreeNode) -> TypeTreeNode: raise ValueError("No typetree generator set!") monobehaviour = cast(MonoBehaviour, self.parse_as_object(base_node, check_read=False)) script = monobehaviour.m_Script.deref_parse_as_object() - node = generator.get_nodes_up(script.m_AssemblyName, f"{script.m_Namespace}.{script.m_ClassName}") + + if script.m_Namespace != "": + fullname = f"{script.m_Namespace}.{script.m_ClassName}" + else: + fullname = script.m_ClassName + + node = generator.get_nodes_up(base_node, script.m_AssemblyName, fullname) if node: return node else: diff --git a/UnityPy/helpers/TypeTreeGenerator.py b/UnityPy/helpers/TypeTreeGenerator.py index 1170f418..0bac7d00 100644 --- a/UnityPy/helpers/TypeTreeGenerator.py +++ b/UnityPy/helpers/TypeTreeGenerator.py @@ -43,7 +43,7 @@ def load_local_dll_folder(self, dll_dir: str): data = f.read() self.load_dll(data) - def get_nodes_up(self, assembly: str, fullname: str) -> TypeTreeNode: + def get_nodes_up(self, base_node: TypeTreeNode, assembly: str, fullname: str) -> TypeTreeNode: root = self.cache.get((assembly, fullname)) if root is not None: return root @@ -60,6 +60,7 @@ def get_nodes_up(self, assembly: str, fullname: str) -> TypeTreeNode: 0, 0, m_MetaFlag=base_root.m_MetaFlag, + m_Children=base_node.m_Children[:], ) stack: List[TypeTreeNode] = [] parent = root