using UnityEngine; using System; using System.IO; using vnxbqy.UI; public class ResourcesPath : Singleton { public const string AssetDependentFileBundleName = #if UNITY_ANDROID "android"; #elif UNITY_IOS "ios"; #else "standalone"; #endif public const string windowFileBundleName = "ui/window"; public const string uiprefabFileBundleName = "ui/prefab"; public readonly static string ResourcesOutPath = Application.dataPath + "/ResourcesOut/"; public const string ResourcesOutAssetPath = "Assets/ResourcesOut/"; public const string AssetDependentFileAssetName = "AssetBundleManifest"; public const string ABExtention = ".unity3d"; public readonly string StreamingAssetPath; public readonly string ExternalStorePath; #region 具体asset资源读取路径 public static readonly string MOB_FOLDER_NAME = "gmodels/"; public static readonly string MOB_SUFFIX = "prefab_race_"; public static readonly string EFFECT_Folder_Name = "effect/"; public static readonly string UI_SPRITE_SUFFIX = "UI/Sprite"; public static readonly string UI_WINDOW_SUFFIX = "UI/Window"; public static readonly string UI_PRIORITYWINDOW_SUFFIX = "UI/PriorityWindow"; public static readonly string UI_FONT_SUFFIX = "UI/Font"; public static readonly string UI_PREFAB_SUFFIX = "UI/Prefab"; public static readonly string CONFIG_FODLER = ResourcesOutPath + "refdata/Config"; public static readonly string AUDIO_SUFFIX = "Audio/"; public static readonly string VIDEO_SUFFIX = "Video/"; #endregion public void Init() { } public ResourcesPath() { #if UNITY_ANDROID StreamingAssetPath = Application.streamingAssetsPath + "/android/"; #elif UNITY_IOS StreamingAssetPath = Application.streamingAssetsPath + "/ios/"; #else StreamingAssetPath = Application.streamingAssetsPath + "/standalone/"; #endif if (!Application.isEditor) { switch (Application.platform) { case RuntimePlatform.WindowsPlayer: ExternalStorePath = Path.GetDirectoryName(Application.streamingAssetsPath) + "/ExternalAssets/"; break; default: ExternalStorePath = Application.persistentDataPath + "/"; break; } } else { ExternalStorePath = Application.persistentDataPath + "/"; } DebugEx.Log("Stream Path: " + StreamingAssetPath); DebugEx.Log("External Path: " + ExternalStorePath); } public void CleanCache() { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("CleanCache2"), (bool isOk) => { if (isOk) { try { // 获取persistentDataPath下的所有文件和文件夹 string[] files = Directory.GetFiles(ExternalStorePath); string[] dirs = Directory.GetDirectories(ExternalStorePath); // 删除所有文件 foreach (string file in files) { if (file.Contains("config")) { continue; } File.Delete(file); } // 递归删除所有文件夹 foreach (string dir in dirs) { if (dir.Contains("config")) { continue; } Directory.Delete(dir, true); } files = Directory.GetFiles(ExternalStorePath + "/config"); foreach (string file in files) { bool isDelete = true; foreach (string filename in ConfigInitiator.builtinConfig) { if (file.Contains(filename)) { isDelete = false; break; } } if (isDelete) File.Delete(file); } } catch (System.Exception e) { Debug.LogError("Failed to clean persistent data: " + e.Message); } finally { Clock.AlarmAfter(0.1f, () => { Application.Quit(); }); Debug.Log("Persistent data cleaned."); } } }); } }