using System; using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace YooAsset.Editor { /// /// 拷贝内置文件到StreamingAssets /// public class TaskCopyBuildinFiles : IBuildTask { void IBuildTask.Run(BuildContext context) { // 注意:我们只有在强制重建的时候才会拷贝 var buildParameters = context.GetContextObject(); if(buildParameters.Parameters.ForceRebuild) { // 清空流目录 AssetBundleBuilderHelper.ClearStreamingAssetsFolder(); // 拷贝内置文件 var pipelineOutputDirectory = buildParameters.PipelineOutputDirectory; CopyBuildinFilesToStreaming(pipelineOutputDirectory); } } private void CopyBuildinFilesToStreaming(string pipelineOutputDirectory) { // 加载补丁清单 PatchManifest patchManifest = AssetBundleBuilderHelper.LoadPatchManifestFile(pipelineOutputDirectory); // 拷贝文件列表 foreach (var patchBundle in patchManifest.BundleList) { if (patchBundle.IsBuildin == false) continue; string sourcePath = $"{pipelineOutputDirectory}/{patchBundle.BundleName}"; string destPath = $"{Application.dataPath}/StreamingAssets/{patchBundle.Hash}"; Debug.Log($"拷贝内置文件到流目录:{patchBundle.BundleName}"); EditorTools.CopyFile(sourcePath, destPath, true); } // 拷贝清单文件 { string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettingsData.Setting.PatchManifestFileName}"; string destPath = $"{Application.dataPath}/StreamingAssets/{YooAssetSettingsData.Setting.PatchManifestFileName}"; EditorTools.CopyFile(sourcePath, destPath, true); } // 拷贝清单哈希文件 { string sourcePath = $"{pipelineOutputDirectory}/{YooAssetSettingsData.Setting.PatchManifestHashFileName}"; string destPath = $"{Application.dataPath}/StreamingAssets/{YooAssetSettingsData.Setting.PatchManifestHashFileName}"; EditorTools.CopyFile(sourcePath, destPath, true); } // 刷新目录 AssetDatabase.Refresh(); } } }