module-navigation-tool/Editor/Utilities/EditorProjectPrefs.cs

85 lines
2.4 KiB
C#

using System.Security.Cryptography;
using System.Text;
using UnityEditor;
using UnityEngine;
namespace Module.NavigationTool.Editor.Utilities
{
internal static class EditorProjectPrefs
{
private static string PRODUCT_ID;
public static void SetInt(string key, int value)
{
EditorPrefs.SetInt(GetProjectKey(key), value);
}
public static void SetFloat(string key, float value)
{
EditorPrefs.SetFloat(GetProjectKey(key), value);
}
public static void SetString(string key, string value)
{
EditorPrefs.SetString(GetProjectKey(key), value);
}
public static void SetBool(string key, bool value)
{
EditorPrefs.SetBool(GetProjectKey(key), value);
}
public static int GetInt(string key, int defaultValue = 0)
{
return EditorPrefs.GetInt(GetProjectKey(key), defaultValue);
}
public static float GetFloat(string key, float defaultValue = 0.0f)
{
return EditorPrefs.GetFloat(GetProjectKey(key), defaultValue);
}
public static string GetString(string key, string defaultValue = "")
{
return EditorPrefs.GetString(GetProjectKey(key), defaultValue);
}
public static bool GetBool(string key, bool defaultValue = false)
{
return EditorPrefs.GetBool(GetProjectKey(key), defaultValue);
}
public static bool HasKey(string key)
{
return EditorPrefs.HasKey(GetProjectKey(key));
}
public static void DeleteKey(string key)
{
EditorPrefs.DeleteKey(GetProjectKey(key));
}
private static string GetProjectKey(string key)
{
if (string.IsNullOrEmpty(PRODUCT_ID))
PRODUCT_ID = ConstructProductIdFromPath();
return $"{PRODUCT_ID}_{key}";
}
private static string ConstructProductIdFromPath()
{
var md5 = MD5.Create();
byte[] bytes = Encoding.UTF8.GetBytes(Application.dataPath);
byte[] data = md5.ComputeHash(bytes);
var sb = new StringBuilder();
for (var i = 0; i < data.Length; i++)
{
sb.Append(data[i].ToString("x2"));
}
return sb.ToString();
}
}
}