using System.IO; using UnityEngine; namespace YooAsset { public static class YooAssetSettingsData { #if UNITY_EDITOR [UnityEngine.RuntimeInitializeOnLoadMethod(UnityEngine.RuntimeInitializeLoadType.SubsystemRegistration)] private static void OnRuntimeInitialize() { _setting = null; } #endif private static YooAssetSettings _setting = null; internal static YooAssetSettings Setting { get { if (_setting == null) LoadSettingData(); return _setting; } } /// /// 加载配置文件 /// private static void LoadSettingData() { _setting = Resources.Load("YooAssetSettings"); if (_setting == null) { YooLogger.Log("YooAsset use default settings."); _setting = ScriptableObject.CreateInstance(); } else { YooLogger.Log("YooAsset use user settings."); } } /// /// 获取YooAsset文件夹名称 /// public static string GetDefaultYooFolderName() { return Setting.DefaultYooFolderName; } /// /// 获取构建报告文件名 /// public static string GetBuildReportFileName(string packageName, string packageVersion) { if (string.IsNullOrEmpty(Setting.PackageManifestPrefix)) return $"{packageName}_{packageVersion}.report"; else return $"{Setting.PackageManifestPrefix}_{packageName}_{packageVersion}.report"; } /// /// 获取清单文件完整名称 /// public static string GetManifestBinaryFileName(string packageName, string packageVersion) { if (string.IsNullOrEmpty(Setting.PackageManifestPrefix)) return $"{packageName}_{packageVersion}.bytes"; else return $"{Setting.PackageManifestPrefix}_{packageName}_{packageVersion}.bytes"; } /// /// 获取清单文件完整名称 /// public static string GetManifestJsonFileName(string packageName, string packageVersion) { if (string.IsNullOrEmpty(Setting.PackageManifestPrefix)) return $"{packageName}_{packageVersion}.json"; else return $"{Setting.PackageManifestPrefix}_{packageName}_{packageVersion}.json"; } /// /// 获取包裹的哈希文件完整名称 /// public static string GetPackageHashFileName(string packageName, string packageVersion) { if (string.IsNullOrEmpty(Setting.PackageManifestPrefix)) return $"{packageName}_{packageVersion}.hash"; else return $"{Setting.PackageManifestPrefix}_{packageName}_{packageVersion}.hash"; } /// /// 获取包裹的版本文件完整名称 /// public static string GetPackageVersionFileName(string packageName) { if (string.IsNullOrEmpty(Setting.PackageManifestPrefix)) return $"{packageName}.version"; else return $"{Setting.PackageManifestPrefix}_{packageName}.version"; } #region 路径相关 /// /// 获取YOO的编辑器下缓存文件根目录 /// internal static string GetYooEditorCacheRoot() { if (string.IsNullOrEmpty(Setting.DefaultYooFolderName)) { string projectPath = Path.GetDirectoryName(Application.dataPath); projectPath = PathUtility.RegularPath(projectPath); return projectPath; } else { // 注意:为了方便调试查看,编辑器下把存储目录放到项目根目录下。 string projectPath = Path.GetDirectoryName(Application.dataPath); projectPath = PathUtility.RegularPath(projectPath); return PathUtility.Combine(projectPath, Setting.DefaultYooFolderName); } } /// /// 获取YOO的PC平台缓存文件根目录 /// internal static string GetYooStandaloneWinCacheRoot() { if (string.IsNullOrEmpty(Setting.DefaultYooFolderName)) return Application.dataPath; else return PathUtility.Combine(Application.dataPath, Setting.DefaultYooFolderName); } /// /// 获取YOO的Linux平台缓存文件根目录 /// internal static string GetYooStandaloneLinuxCacheRoot() { if (string.IsNullOrEmpty(Setting.DefaultYooFolderName)) return Application.dataPath; else return PathUtility.Combine(Application.dataPath, Setting.DefaultYooFolderName); } /// /// 获取YOO的Mac平台缓存文件根目录 /// internal static string GetYooStandaloneMacCacheRoot() { if (string.IsNullOrEmpty(Setting.DefaultYooFolderName)) return Application.persistentDataPath; else return PathUtility.Combine(Application.persistentDataPath, Setting.DefaultYooFolderName); } /// /// 获取YOO的移动平台缓存文件根目录 /// internal static string GetYooMobileCacheRoot() { if (string.IsNullOrEmpty(Setting.DefaultYooFolderName)) return Application.persistentDataPath; else return PathUtility.Combine(Application.persistentDataPath, Setting.DefaultYooFolderName); } /// /// 获取YOO默认的缓存文件根目录 /// internal static string GetYooDefaultCacheRoot() { #if UNITY_EDITOR return GetYooEditorCacheRoot(); #elif UNITY_STANDALONE_WIN return GetYooStandaloneWinCacheRoot(); #elif UNITY_STANDALONE_LINUX return GetYooStandaloneLinuxCacheRoot(); #elif UNITY_STANDALONE_OSX return GetYooStandaloneMacCacheRoot(); #else return GetYooMobileCacheRoot(); #endif } /// /// 获取YOO默认的内置文件根目录 /// internal static string GetYooDefaultBuildinRoot() { if (string.IsNullOrEmpty(Setting.DefaultYooFolderName)) return Application.streamingAssetsPath; else return PathUtility.Combine(Application.streamingAssetsPath, Setting.DefaultYooFolderName); } #endregion } }