private static void createAssetsInfo(string buildPath) { int formatVersion = 1; var assetBundlePath = buildPath + "/AssetBundles/AssetBundles"; var rootPath = buildPath + "/AssetBundles"; AssetBundleManifest manifest = loadManifest(assetBundlePath); if (manifest != null) { Framework.Common.BufferHelper bufferHelper = new Framework.Common.BufferHelper(); bufferHelper.WriteData(formatVersion); var bundles = manifest.GetAllAssetBundles(); var bundlesCount = bundles.Length; bufferHelper.WriteData(bundlesCount); foreach (var bundleName in bundles) { Debug.Log("AssetsBundle: " + bundleName); var assetsBundle = AssetBundle.LoadFromFile(rootPath + "/" + bundleName); if (assetsBundle != null) { var assets = assetsBundle.GetAllAssetNames(); int assetsCount = assets.Length; var scenes = assetsBundle.GetAllScenePaths(); int scenesCount = scenes.Length; bufferHelper.WriteData(bundleName); bufferHelper.WriteData(assetsCount + scenesCount); foreach (var asset in assets) { bufferHelper.WriteData(asset); } foreach (var scene in scenes) { bufferHelper.WriteData(scene); } assetsBundle.Unload(true); } } // write file. var buffer = bufferHelper.ByteBuffer; var size = bufferHelper.WriteIndex; FileStream fs = new FileStream(rootPath + "/AssetsTable", FileMode.Create); System.IO.BinaryWriter writer = new BinaryWriter(fs); writer.Write(buffer, 0, size); writer.Flush(); writer.Close(); fs.Close(); } }
private bool initAssetsTable(string _assetsPath) { assetsTable = new Dictionary <string, string>(); byte[] buffer = null; if (_assetsPath.Contains("://")) // Android APK { WWW www = new WWW(_assetsPath); while (!www.isDone) { } buffer = www.bytes; } else { buffer = System.IO.File.ReadAllBytes(_assetsPath); } if (buffer == null || buffer.Length < 8) { return(false); } var bufferhelper = new Framework.Common.BufferHelper(buffer); var versionNum = bufferhelper.ReadInt32(); var bundleCount = bufferhelper.ReadInt32(); for (int i = 0; i < bundleCount; ++i) { var bundleName = bufferhelper.ReadStr(); var assetsCount = bufferhelper.ReadInt32(); for (int j = 0; j < assetsCount; ++j) { var asset = bufferhelper.ReadStr(); assetsTable.Add(asset, bundleName); } } return(true); }