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
}
}