diff --git a/AssetStudio/StudioClasses/AssetsFile.cs b/AssetStudio/StudioClasses/AssetsFile.cs index 6c8d546..56327e9 100644 --- a/AssetStudio/StudioClasses/AssetsFile.cs +++ b/AssetStudio/StudioClasses/AssetsFile.cs @@ -113,14 +113,17 @@ namespace AssetStudio for (int i = 0; i < objectCount; i++) { - //each table entry is aligned individually, not the whole table - if (header.m_Version >= 14) + AssetPreloadData asset = new AssetPreloadData(); + + if (header.m_Version < 14) + { + asset.m_PathID = reader.ReadInt32(); + } + else { reader.AlignStream(4); + asset.m_PathID = reader.ReadInt64(); } - - AssetPreloadData asset = new AssetPreloadData(); - asset.m_PathID = header.m_Version < 14 ? reader.ReadInt32() : reader.ReadInt64(); asset.Offset = reader.ReadUInt32(); asset.Offset += header.m_DataOffset; asset.Size = reader.ReadInt32(); @@ -180,7 +183,15 @@ namespace AssetStudio { var m_ScriptType = new LocalSerializedObjectIdentifier(); m_ScriptType.localSerializedFileIndex = reader.ReadInt32(); - m_ScriptType.localIdentifierInFile = header.m_Version < 14 ? reader.ReadInt32() : reader.ReadInt64(); + if (header.m_Version < 14) + { + m_ScriptType.localIdentifierInFile = reader.ReadInt32(); + } + else + { + reader.AlignStream(4); + m_ScriptType.localIdentifierInFile = reader.ReadInt64(); + } m_ScriptTypes.Add(m_ScriptType); } } @@ -204,6 +215,11 @@ namespace AssetStudio m_Externals.Add(m_External); } + if (header.m_Version >= 5) + { + //var userInformation = reader.ReadStringToNull(); + } + buildType = Regex.Replace(unityVersion, @"\d", "").Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries); var firstVersion = int.Parse(unityVersion.Split('.')[0]); version = Regex.Matches(unityVersion, @"\d").Cast().Select(m => int.Parse(m.Value)).ToArray(); diff --git a/AssetStudio/StudioClasses/PPtr.cs b/AssetStudio/StudioClasses/PPtr.cs index e67feb3..3d0a244 100644 --- a/AssetStudio/StudioClasses/PPtr.cs +++ b/AssetStudio/StudioClasses/PPtr.cs @@ -20,7 +20,7 @@ namespace AssetStudio return true; } - if (m_FileID > 0) + if (m_FileID > 0 && m_FileID - 1 < assetsFile.m_Externals.Count) { if (index == -2) {