private static void AddAddressGroup(AssetPackerConfig assetPackerConfig) { if (assetPackerConfig != null) { RemoveAddressGroup(assetPackerConfig); string[] assetPaths = AssetDatabaseUtility.FindAssets <AssetAddressConfig>(); if (assetPaths == null || assetPaths.Length == 0) { Debug.LogError("AssetPackUtil::AddAddressGroup->AssetAddressConfig is not found!"); return; } AssetPackerGroupData groupData = new AssetPackerGroupData() { groupName = AddressGroupName, }; AssetPackerAddressData addressData = new AssetPackerAddressData() { assetAddress = AssetConst.ASSET_ADDRESS_CONFIG_NAME, assetPath = assetPaths[0], bundlePath = AssetConst.ASSET_ADDRESS_BUNDLE_NAME, bundlePathMd5 = MD5Crypto.Md5(AssetConst.ASSET_ADDRESS_BUNDLE_NAME).ToLower(), }; groupData.assetFiles.Add(addressData); assetPackerConfig.groupDatas.Add(groupData); } }
public static AssetPackerConfig GetAssetPackerConfig() { AssetPackerConfig packerConfig = new AssetPackerConfig(); AssetAddressGroup[] groups = AssetDatabaseUtility.FindInstances <AssetAddressGroup>(); if (groups != null && groups.Length > 0) { foreach (var group in groups) { AssetPackerGroupData groupData = new AssetPackerGroupData(); groupData.groupName = group.groupName; groupData.isMain = group.isMain; groupData.isPreload = group.isPreload; groupData.isNeverDestroy = group.isNeverDestroy; groupData.assetFiles = GetAssetsInGroup(group); packerConfig.groupDatas.Add(groupData); } } packerConfig.Sort(); AddAddressGroup(packerConfig); return(packerConfig); }
private static void RemoveAddressGroup(AssetPackerConfig assetPackerConfig) { if (assetPackerConfig != null) { foreach (var group in assetPackerConfig.groupDatas) { if (group.groupName == AddressGroupName) { assetPackerConfig.groupDatas.Remove(group); break; } } } }
public static void SetAssetBundleNames(AssetPackerConfig assetPackerConfig, BundlePathFormatType bundlePathFormat, bool isShowProgressBar = false) { if (isShowProgressBar) { EditorUtility.DisplayProgressBar("Set Bundle Names", "", 0f); } List <AssetPackerAddressData> addressDatas = new List <AssetPackerAddressData>(); assetPackerConfig.groupDatas.ForEach((groupData) => { addressDatas.AddRange(groupData.assetFiles); }); for (int i = 0; i < addressDatas.Count; ++i) { if (isShowProgressBar) { EditorUtility.DisplayProgressBar("Set Bundle Names", addressDatas[i].assetPath, i / (float)addressDatas.Count); } string assetPath = addressDatas[i].assetPath; string bundlePath = addressDatas[i].bundlePath; if (bundlePathFormat == BundlePathFormatType.MD5) { bundlePath = addressDatas[i].bundlePathMd5; } AssetImporter ai = AssetImporter.GetAtPath(assetPath); ai.assetBundleName = bundlePath; if (Path.GetExtension(assetPath).ToLower() == ".spriteatlas") { SetSpriteBundleNameByAtlas(assetPath, bundlePath); } } if (isShowProgressBar) { EditorUtility.ClearProgressBar(); } AssetDatabase.SaveAssets(); }
public static void PackAssetBundle(AssetPackerConfig packerConfig, BundleBuildConfig buildConfig) { IAssetBundlePacker bundlePacker = null; Type[] bundlePackerTypes = AssemblyUtility.GetDerivedTypes(typeof(IAssetBundlePacker)); if (bundlePackerTypes != null && bundlePackerTypes.Length > 0) { bundlePacker = (IAssetBundlePacker)Activator.CreateInstance(bundlePackerTypes[0]); } if (bundlePacker == null) { Debug.LogError("AssetPackerUtil::PackAssetBundle->DoPackAssetBundle is null."); return; } if (string.IsNullOrEmpty(buildConfig.bundleOutputDir)) { Debug.Log("AssetPackerUtil::PackAssetBundle->bundleOutputDir is null."); return; } string outputDir = $"{buildConfig.bundleOutputDir}/{buildConfig.buildTarget.ToString()}/assetbundles"; if (buildConfig.cleanupBeforeBuild && Directory.Exists(outputDir)) { Directory.Delete(outputDir, true); } if (!Directory.CreateDirectory(outputDir).Exists) { Debug.LogError("AssetPackUitl::PackAssetBundle->Folder is not found. dir = " + outputDir); return; } AssetBundleConfig bundleConfig = bundlePacker.PackAssetBundle(packerConfig, buildConfig, outputDir); var json = JsonConvert.SerializeObject(bundleConfig, Formatting.Indented); string jsonFilePath = $"{outputDir}/{AssetConst.ASSET_BUNDLE_CONFIG_NAME}"; File.WriteAllText(jsonFilePath, json); }
private void OnEnable() { assetPackerConfig = AssetPackerUtil.GetAssetPackerConfig(); foreach (var group in assetPackerConfig.groupDatas) { foreach (var data in group.assetFiles) { if (!addressRepeatDataDic.TryGetValue(data.assetAddress, out List <AssetPackerAddressData> dataList)) { dataList = new List <AssetPackerAddressData>(); addressRepeatDataDic.Add(data.assetAddress, dataList); } dataList.Add(data); } } if (PlayerSettingsUtility.HasScriptingDefineSymbol(ASSET_BUNDLE_SYMBOL)) { runMode = RunMode.AssetBundle; } }