/**
  *  Associate key with color value.
  *  Optional isLocal parameter stores preference in project settings (true) or global (false).
  */
 public static void SetColor(string key, Color value, PreferenceLocation location = PreferenceLocation.Project)
 {
     if (location == PreferenceLocation.Project)
     {
         if (preferences == null)
         {
             return;
         }
         preferences.SetColor(key, value);
         UnityEditor.EditorUtility.SetDirty(preferences);
     }
     else
     {
         EditorPrefs.SetString(key, value.ToString());
     }
 }
 /**
  *  Associate key with material value.
  *  Optional isLocal parameter stores preference in project settings (true) or global (false).
  */
 public static void SetMaterial(string key, Material value, PreferenceLocation location = PreferenceLocation.Project)
 {
     if (location == PreferenceLocation.Project)
     {
         if (preferences == null)
         {
             return;
         }
         preferences.SetMaterial(key, value);
         UnityEditor.EditorUtility.SetDirty(preferences);
     }
     else
     {
         EditorPrefs.SetString(key, value != null ? AssetDatabase.GetAssetPath(value) : "");
     }
 }
 /**
  *  Associate key with bool value.
  *  Optional isLocal parameter stores preference in project settings (true) or global (false).
  */
 public static void SetBool(string key, bool value, PreferenceLocation location = PreferenceLocation.Project)
 {
     if (location == PreferenceLocation.Project)
     {
         if (preferences == null)
         {
             return;
         }
         preferences.SetBool(key, value);
         UnityEditor.EditorUtility.SetDirty(preferences);
     }
     else
     {
         EditorPrefs.SetBool(key, value);
     }
 }
 /// <summary>
 /// Serialize a value to JSON
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <param name="location"></param>
 /// <typeparam name="T"></typeparam>
 public static void SetValue <T>(string key, T value, PreferenceLocation location = PreferenceLocation.Project)
 {
     SetString(key, JsonUtility.ToJson(value), location);
 }