From 3479fe5c04b96573336dbc4fcbc674c6b5747ec4 Mon Sep 17 00:00:00 2001 From: VaDiM Date: Fri, 11 Sep 2026 19:42:48 +0300 Subject: [PATCH] Add AssetBundleManifest support --- AssetStudio/AssetsManager.cs | 3 ++ AssetStudio/Classes/AssetBundleManifest.cs | 42 ++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 AssetStudio/Classes/AssetBundleManifest.cs diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index 469aa6b..09aba5a 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -692,6 +692,9 @@ namespace AssetStudio case ClassIDType.AssetBundle: obj = new AssetBundle(objectReader); break; + case ClassIDType.AssetBundleManifest: + obj = new AssetBundleManifest(objectReader); + break; case ClassIDType.AudioClip: obj = new AudioClip(objectReader); break; diff --git a/AssetStudio/Classes/AssetBundleManifest.cs b/AssetStudio/Classes/AssetBundleManifest.cs new file mode 100644 index 0000000..1d6d49c --- /dev/null +++ b/AssetStudio/Classes/AssetBundleManifest.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; + +namespace AssetStudio +{ + public class AssetBundleInfo + { + public string AssetBundleHash; + public int[] AssetBundleDependencies; + + public AssetBundleInfo(ObjectReader reader) + { + AssetBundleHash = reader.ReadBytesAsHexString(16); + AssetBundleDependencies = reader.ReadInt32Array(); + } + } + + public sealed class AssetBundleManifest : NamedObject + { + public List> AssetBundleNames; + public int[] AssetBundlesWithVariant; + public List> AssetBundleInfos; + + public AssetBundleManifest(ObjectReader reader) : base(reader) + { + var AssetBundleNamesCount = reader.ReadInt32(); + AssetBundleNames = new List>(); + for (var i = 0; i < AssetBundleNamesCount; i++) + { + AssetBundleNames.Add(new KeyValuePair(reader.ReadInt32(), reader.ReadAlignedString())); + } + + AssetBundlesWithVariant = reader.ReadInt32Array(); + + var AssetBundleInfosCount = reader.ReadInt32(); + AssetBundleInfos = new List>(); + for (var i = 0; i < AssetBundleInfosCount; i++) + { + AssetBundleInfos.Add(new KeyValuePair(reader.ReadInt32(), new AssetBundleInfo(reader))); + } + } + } +}