private int m_GroupIndex = 0; //索引 /// <summary> /// 执行 /// </summary> /// <param name="filterResult"></param> /// <param name="operationResult"></param> /// <returns></returns> public override AssetOperationResult Execute(AssetFilterResult filterResult, AssetOperationResult operationResult) { if (operationResult == null) { operationResult = new AssetAddressOperationResult(); } AssetAddressOperationResult result = operationResult as AssetAddressOperationResult; foreach (var assetPath in filterResult.m_AssetPaths) { if (!result.m_AddressDataDic.TryGetValue(assetPath, out AssetAddressData addressData)) { addressData = new AssetAddressData(); addressData.AssetPath = assetPath; result.m_AddressDataDic.Add(assetPath, addressData); } string rootFolder = Path.GetDirectoryName(assetPath).Replace("\\", "/"); string bundPathStr = GetAssetBundle(rootFolder, assetPath).ToLower(); //设置AB set Name switch (m_BundNameMode) { case AssetBundleNameMode.PathString: addressData.BundlePath = bundPathStr; break; case AssetBundleNameMode.PathMd5: addressData.BundlePath = GetHash(bundPathStr, false); break; } } return(result); }
/// <summary> /// 执行保存到二进制中 /// </summary> /// <returns></returns> public override AssetAssemblyResult Execute() { AssetAddressAssemblyResult result = new AssetAddressAssemblyResult(); foreach (var group in m_AssetGroups) { group.Execute(result); } //读取配置 AssetBundleTagConfig tagConfig = Util.FileUtil.ReadFromBinary <AssetBundleTagConfig>(BundlePackUtil.GetTagConfigPath()); if (tagConfig.GroupDatas == null) { tagConfig.GroupDatas = new List <AssetBundleGroupData>(); } else { tagConfig.GroupDatas.Clear(); } foreach (var groupResult in result.m_GroupResults) { AssetAddressGroupResult gResult = groupResult as AssetAddressGroupResult; AssetBundleGroupData groupData = new AssetBundleGroupData(); groupData.GroupName = gResult.m_GroupName; groupData.IsGenAddress = gResult.m_IsGenAddress; groupData.IsMain = gResult.m_IsMain; groupData.IsPreload = gResult.m_IsPreload; tagConfig.GroupDatas.Add(groupData); foreach (var operationResult in gResult.m_OperationResults) { AssetAddressOperationResult oResult = operationResult as AssetAddressOperationResult; foreach (var kvp in oResult.m_AddressDataDic) { AssetAddressData aaData = new AssetAddressData(); AssetAddressData kvpValue = kvp.Value as AssetAddressData; aaData.AssetAddress = kvpValue.AssetAddress; aaData.AssetPath = kvpValue.AssetPath; aaData.BundlePath = kvpValue.BundlePath; aaData.Labels = new List <string>(kvpValue.Labels).ToArray(); groupData.AssetDatas.Add(aaData); } } } //保存配置 Util.FileUtil.SaveToBinary <AssetBundleTagConfig>(BundlePackUtil.GetTagConfigPath(), tagConfig); return(result); }
/// <summary> /// 执行 /// </summary> /// <param name="filterResult"></param> /// <param name="operationResult"></param> /// <returns></returns> public override AssetOperationResult Execute(AssetFilterResult filterResult, AssetOperationResult operationResult) { if (operationResult == null) { operationResult = new AssetAddressOperationResult(); } AssetAddressOperationResult result = operationResult as AssetAddressOperationResult; foreach (var assetPath in filterResult.m_AssetPaths) { if (!result.m_AddressDataDic.TryGetValue(assetPath, out AssetAddressData addressData)) { addressData = new AssetAddressData(); addressData.AssetPath = assetPath; result.m_AddressDataDic.Add(assetPath, addressData); } addressData.AssetAddress = GetAssetAddress(assetPath); } return(result); }