/// <summary> /// 获取他的真实位置 /// </summary> /// <param name="path">相对于ResWhichIsNotAB目录的路径</param> /// <returns></returns> public string GetPathOfResWhichIsNotAB(string path) { #if UNITY_EDITOR && !AB_MODE return(ResHelper.GetAssetsResWichIsNotABFolder() + path); #else return(ResHelper.GetResFolder() + path); #endif }
/// <summary> /// BuildRes /// </summary> /// <param name="target"></param> public void BuildRes(BuildTarget target) { //切换平台 UnityEditor.EditorUserBuildSettings.SwitchActiveBuildTarget(BuildPipeline.GetBuildTargetGroup(target), target); //编译AB { string abFolder = ResHelper.GetABFolder(target); Directory.CreateDirectory(abFolder); //编译AB var manifest = BuildPipeline.BuildAssetBundles(abFolder, assetBundleBuildList.ToArray(), BuildAssetBundleOptions.ChunkBasedCompression, target); //所有的 string[] abNameArray = manifest.GetAllAssetBundles(); //删除无用的AB HashSet <string> abNameSet = new HashSet <string>(abNameArray); string[] files = Directory.GetFiles(abFolder); foreach (var item in files) { string fileName = Path.GetFileName(item); fileName = fileName.Replace(".manifest", ""); if (!abNameSet.Contains(fileName) && fileName != "AB") { Log.Print("删除AB:" + item); File.Delete(item); } } } //复制不打成AB的文件 FileUtil.CopyDirectory("*", ResHelper.GetAssetsResWichIsNotABFolder(), ResHelper.GetResFolder(target), false); //复制 foreach (var copyFolder in this.config.copyFolderList) { string org = ResHelper.GetAssetsResFolder() + copyFolder.folder; string dst = ResHelper.GetResFolder(target) + copyFolder.folder; string pattern = "*"; if (copyFolder.pattern != null) { pattern = copyFolder.pattern; } FileUtil.CopyDirectory(pattern, org, dst); } //复制Lua { string dst = ResHelper.GetLuaFolder(); if (Directory.Exists(dst)) { Directory.Delete(dst, true); } FileUtil.CopyDirectory("*.lua", LuaConst.luaDir, dst, false); FileUtil.CopyDirectory("*.lua", LuaConst.toluaDir, dst, false); } //生成sbf CreateSBFAdnSave(ResHelper.GetResFolder(target)); }