private void RetrievalResourceBuildInfo(ResourceItemConfig _Item, ref AppBuileInfo _BuildInfo) { string AssetBundleName = _Item.AssetBundleName.ToLower() + AppConfig.ResFileSuffix; if (!_BuildInfo.AppResInfo.ContainsKey(AssetBundleName)) { _BuildInfo.AppResInfo[AssetBundleName] = new ResBuileInfo { Id = AssetBundleName, Model = _Item.ModelName, Assets = new List <string>() }; } if (_Item.NodelType == ResourceBuildNodelType.ResourcesItemNodel) { _BuildInfo.AppResInfo[AssetBundleName].Assets.Add(_Item.Path.Substring(AppConfig.PlatformRoot.Length + 1)); } else { foreach (var item in _Item.ChildBuildItem) { RetrievalResourceBuildInfo(item, ref _BuildInfo); } } }
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); }
/// <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("卧槽哦,啥逼情况啊"); } }