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();
            }
        }
Example #2
0
        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);
        }