| Assets/Editor/Tool/ClientPackage.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Assets/Editor/Tool/ClientPackage_Standalone.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Assets/Editor/YooAsset/AddressByRelativePath.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Assets/Editor/YooAsset/YooAssetBuildTool.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Assets/Editor/Tool/ClientPackage.cs
@@ -15,6 +15,7 @@ { public static readonly string versionsFilePath = Application.dataPath + "/Editor/VersionConfigs/Versions.txt"; public static readonly string[] baseLevels = new string[] { "Assets/Resources/Scenes/Launch.unity" }; private static readonly string[] LaunchRequiredYooPackages = { "Builtin", "Dll" }; public static string auditOutTime = string.Empty; @@ -144,14 +145,12 @@ // YooAsset StreamingAssets 根目录 string yooRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); // ---- NullAsset(小包):不保留任何 Package,全部从 CDN 按需下载 ---- // ---- NullAsset(小包):只保留 Launch 必需 Package,其它资源从 CDN 按需下载 ---- if (smallPackages.Count > 0) { // 删除所有 Package 文件夹 string[] keepPackages = { }; RemovePackagesExcept(yooRoot, keepPackages); RemovePackagesExcept(yooRoot, LaunchRequiredYooPackages); // 写入空的 Buildin 包列表,运行时所有包走纯 CacheFileSystem // 写入随包 Package 列表,运行时 Builtin/Dll 创建 BuildinFileSystem,其它包走 CacheFileSystem YooAssetBuildTool.WriteBuildinPackageList(); for (int i = 0; i < smallPackages.Count; i++) Assets/Editor/Tool/ClientPackage_Standalone.cs
@@ -29,6 +29,20 @@ return file.Name.EndsWith("OPConfig.txt", StringComparison.OrdinalIgnoreCase); } static bool IsBuiltinFile(FileInfo file) { if (file.FullName.IndexOf("builtin", StringComparison.OrdinalIgnoreCase) >= 0) return true; foreach (var configName in builtinConfigs) { if (string.Equals(configName, file.Name, StringComparison.OrdinalIgnoreCase)) return true; } return false; } public static int AssetPrior { get { return LocalSave.GetInt("Standalone_HalfAssetPrior", 1); } @@ -113,8 +127,7 @@ FileExtersion.GetAllDirectoryFileInfos(assetPath, files); foreach (var file in files) { var fileName = Path.GetFileName(file.FullName); if (file.FullName.Contains("builtin") || builtinConfigs.Contains(fileName)) if (IsBuiltinFile(file)) { builtInFiles.Add(file); } Assets/Editor/YooAsset/AddressByRelativePath.cs
@@ -4,6 +4,7 @@ // 避免同目录下同名不同扩展名文件的地址冲突 // ============================================================================ using System; using System.IO; using YooAsset.Editor; @@ -20,20 +21,23 @@ { string IAddressRule.GetAssetAddress(AddressRuleData data) { // 去掉 CollectPath 前缀,得到相对路径 string relativePath = data.AssetPath; string collectRoot = data.CollectPath; string assetPath = NormalizeAssetPath(data.AssetPath); string collectPath = NormalizeAssetPath(data.CollectPath).TrimEnd('/'); // 确保以 / 结尾 if (!collectRoot.EndsWith("/")) collectRoot += "/"; if (assetPath.Equals(collectPath, StringComparison.OrdinalIgnoreCase)) return Path.GetFileName(assetPath); if (relativePath.StartsWith(collectRoot)) string collectRoot = collectPath + "/"; if (assetPath.StartsWith(collectRoot, StringComparison.OrdinalIgnoreCase)) { relativePath = relativePath.Substring(collectRoot.Length); return assetPath.Substring(collectRoot.Length); } // 保留扩展名,避免同名不同类型文件地址冲突 return relativePath; return Path.GetFileName(assetPath); } private static string NormalizeAssetPath(string assetPath) { return string.IsNullOrEmpty(assetPath) ? string.Empty : assetPath.Replace('\\', '/'); } } Assets/Editor/YooAsset/YooAssetBuildTool.cs
@@ -406,6 +406,8 @@ /// </summary> public static bool BuildAllPackagesCore(bool incremental) { CollectResBeforeUpdate.SyncCollectors(); // ---- 打包前:HybridCLR DLL(增量模式跳过)---- if (!incremental) {