diff --git a/Assets/Scripts/Editor/VirtualFPostProcess.cs b/Assets/Scripts/Editor/VirtualFPostProcess.cs index 37b625a1..a687e3f0 100644 --- a/Assets/Scripts/Editor/VirtualFPostProcess.cs +++ b/Assets/Scripts/Editor/VirtualFPostProcess.cs @@ -1,6 +1,8 @@ +using System; using System.Collections; using System.Collections.Generic; using System.IO; +using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine; @@ -26,6 +28,72 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport { Debug.LogWarning("未找到数据目录: " + dataFolderPath); } + DeletAssetBundle(buildOutputPath); + } + + /// + /// 删除不属于当前平台的资源 + /// + public void DeletAssetBundle(string buildOutPutPath) + { + if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.WebGL) + { + string path = Path.Combine(buildOutPutPath, "StreamingAssets", "AssetBundles"); + if (Directory.Exists(path)) + { + string[] allDirectories = Directory.GetDirectories(path); + foreach (string dir in allDirectories) + { + string dirName = Path.GetFileName(dir); + if (!dirName.Equals("WebGL", StringComparison.OrdinalIgnoreCase)) // 忽略大小写 + { + try + { + Directory.Delete(dir, true); + Debug.Log($"Deleted directory: {dir}"); + } + catch (Exception e) + { + Debug.LogError($"Failed to delete {dir}: {e.Message}"); + } + } + } + } + else + { + Debug.LogError($"Directory not found: {path}"); + } + } + else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows|| EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64) + { + string path = Path.Combine(buildOutPutPath, "VirtualFramwork_Data", "StreamingAssets", "AssetBundles"); + if (Directory.Exists(path)) + { + string[] allDirectories = Directory.GetDirectories(path); + foreach (string dir in allDirectories) + { + string dirName = Path.GetFileName(dir); + if (!dirName.Equals("Windows", StringComparison.OrdinalIgnoreCase)) // 忽略大小写 + { + try + { + Directory.Delete(dir, true); + Debug.Log($"Deleted directory: {dir}"); + } + catch (Exception e) + { + Debug.LogError($"Failed to delete {dir}: {e.Message}"); + } + } + } + } + else + { + Debug.LogError($"Directory not found: {path}"); + } + } + + } private string GetValidBuildPath(BuildReport report) diff --git a/Assets/Scripts/Global/Global.cs b/Assets/Scripts/Global/Global.cs index fe5f2b56..808c8902 100644 --- a/Assets/Scripts/Global/Global.cs +++ b/Assets/Scripts/Global/Global.cs @@ -13,8 +13,11 @@ public class Global : Singleton public XMLTool.AppData appData; public Module curModule; public Body3D.Body cur3DPart; - +#if UNITY_WEBGL + public static string dataPath = Application.dataPath + "/Data"; +#else public static string dataPath = Application.dataPath + "/../Data"; +#endif public static string deviceIconsPath = dataPath + "/DeviceIcons/"; public static string audioPath = dataPath + "/Audio/"; public static string appXmlPath = dataPath + "/App.xml";