From 06b4ae9ffefc078e6ce8b956203b409fb69d9a56 Mon Sep 17 00:00:00 2001 From: Perfare Date: Sat, 21 May 2022 05:46:44 +0800 Subject: [PATCH] Fix type conversion bug --- AssetStudio/TypeTreeHelper.cs | 10 +++++++--- AssetStudioUtility/TypeDefinitionConverter.cs | 16 ++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/AssetStudio/TypeTreeHelper.cs b/AssetStudio/TypeTreeHelper.cs index c8cbc50..7b4e959 100644 --- a/AssetStudio/TypeTreeHelper.cs +++ b/AssetStudio/TypeTreeHelper.cs @@ -40,9 +40,11 @@ namespace AssetStudio value = reader.ReadSByte(); break; case "UInt8": - case "char": value = reader.ReadByte(); break; + case "char": + value = BitConverter.ToChar(reader.ReadBytes(2), 0); + break; case "short": case "SInt16": value = reader.ReadInt16(); @@ -82,7 +84,8 @@ namespace AssetStudio append = false; var str = reader.ReadAlignedString(); sb.AppendFormat("{0}{1} {2} = \"{3}\"\r\n", (new string('\t', level)), varTypeStr, varNameStr, str); - i += 3; + var toSkip = GetNodes(m_Nodes, i); + i += toSkip.Count - 1; break; case "map": { @@ -233,7 +236,8 @@ namespace AssetStudio break; case "string": value = reader.ReadAlignedString(); - i += 3; + var toSkip = GetNodes(m_Nodes, i); + i += toSkip.Count - 1; break; case "map": { diff --git a/AssetStudioUtility/TypeDefinitionConverter.cs b/AssetStudioUtility/TypeDefinitionConverter.cs index 28f4f03..333a3dc 100644 --- a/AssetStudioUtility/TypeDefinitionConverter.cs +++ b/AssetStudioUtility/TypeDefinitionConverter.cs @@ -253,28 +253,28 @@ namespace AssetStudio switch (typeRef.FullName) { case "UnityEngine.AnimationCurve": - Helper.AddAnimationCurve(nodes, name, indent + 1); + Helper.AddAnimationCurve(nodes, name, indent); break; case "UnityEngine.Gradient": - Helper.AddGradient(nodes, name, indent + 1); + Helper.AddGradient(nodes, name, indent); break; case "UnityEngine.GUIStyle": - Helper.AddGUIStyle(nodes, name, indent + 1); + Helper.AddGUIStyle(nodes, name, indent); break; case "UnityEngine.RectOffset": - Helper.AddRectOffset(nodes, name, indent + 1); + Helper.AddRectOffset(nodes, name, indent); break; case "UnityEngine.Color32": - Helper.AddColor32(nodes, name, indent + 1); + Helper.AddColor32(nodes, name, indent); break; case "UnityEngine.Matrix4x4": - Helper.AddMatrix4x4(nodes, name, indent + 1); + Helper.AddMatrix4x4(nodes, name, indent); break; case "UnityEngine.Rendering.SphericalHarmonicsL2": - Helper.AddSphericalHarmonicsL2(nodes, name, indent + 1); + Helper.AddSphericalHarmonicsL2(nodes, name, indent); break; case "UnityEngine.PropertyName": - Helper.AddPropertyName(nodes, name, indent + 1); + Helper.AddPropertyName(nodes, name, indent); break; } }