示例#1
0
        public void WriteAppBuilderInfo(AssetBundleManifest BundleManifest, AppBuileInfo BuildInfo)
        {
            string[] AssetBundles = BundleManifest.GetAllAssetBundles();
            for (int i = 0; i < AssetBundles.Length; i++)
            {
                if (BuildInfo.AppResInfo.ContainsKey(AssetBundles[i]))
                {
                    ResBuileInfo BuildeInfo = BuildInfo.AppResInfo[AssetBundles[i]];
                    FileInfo     fiInput    = new FileInfo(Config.ResourceOutPath + "/" + BuildeInfo.Id);
                    BuildeInfo.Size         = fiInput.Length / 1024.0f;
                    BuildeInfo.Md5          = BundleManifest.GetAssetBundleHash(AssetBundles[i]).ToString();
                    BuildeInfo.IsNeedUpdata = false;
                    string[] Dependencie = BundleManifest.GetDirectDependencies(AssetBundles[i]);
                    BuildeInfo.Dependencies = new string[Dependencie.Length];
                    for (int n = 0; n < Dependencie.Length; n++)
                    {
                        BuildeInfo.Dependencies[n] = Dependencie[n];
                    }
                }
                else
                {
                    LoggerHelper.Error("No AssetBundles Key=" + AssetBundles[i]);
                }
            }
            string Json = JsonConvert.SerializeObject(BuildInfo);

            FilesTools.WriteStrToFile(Config.ResourceOutPath + "/AssetInfo.json", Json);
        }
示例#2
0
        /// <summary>
        /// 编译资源模块
        /// </summary>
        public void BuildResourceModel()
        {
            BuildTarget BuildTargetPlatform = BuildTarget.StandaloneWindows;

            switch (Config.BuildPlatform)
            {
            case AppPlatform.Android:
                BuildTargetPlatform = BuildTarget.Android;
                break;

            case AppPlatform.IOS:
                BuildTargetPlatform = BuildTarget.iOS;
                break;

            case AppPlatform.Windows:
                BuildTargetPlatform = BuildTarget.StandaloneWindows;
                break;

            default:
                BuildTargetPlatform = BuildTarget.StandaloneWindows;
                break;
            }
            AppBuileInfo BuildInfo = new AppBuileInfo();

            foreach (var item in Config.ModelBuildConfig)
            {
                if (item.IsSelection)
                {
                    RetrievalResourceBuildInfo(item, ref BuildInfo);
                }
            }
            AssetBundleBuild[] builds      = new AssetBundleBuild[BuildInfo.AppResInfo.Count];
            List <string>      BuilderKeys = new List <string>(BuildInfo.AppResInfo.Keys);

            for (int i = 0; i < BuilderKeys.Count; i++)
            {
                builds[i] = new AssetBundleBuild
                {
                    assetBundleName = BuilderKeys[i],
                    assetNames      = BuildInfo.AppResInfo[BuilderKeys[i]].Assets.ToArray()
                };
            }
            AssetBundleManifest BundleInfo = BuildPipeline.BuildAssetBundles(Config.ResourceOutPath, builds, BuildAssetBundleOptions.None, BuildTargetPlatform);

            if (BundleInfo != null)
            {
                WriteAppBuilderInfo(BundleInfo, BuildInfo);
                FilesTools.ClearDirFile(Config.ResourceOutPath, new string[] { AppConfig.ResFileSuffix, ".json" });
                AssetDatabase.Refresh();
            }
            else
            {
                LoggerHelper.Error("卧槽哦,啥逼情况啊");
            }
        }