forked from BilalY/Rasagar
95 lines
3.3 KiB
C#
95 lines
3.3 KiB
C#
|
using UnityEditor.EditorTools;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace UnityEditor.SettingsManagement.Examples
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// This example shows how to access multiple project setting repositories without making use of
|
|||
|
/// <see cref="UserSetting{T}"/>.
|
|||
|
/// </summary>
|
|||
|
[EditorTool("Editor Tool Settings Example")]
|
|||
|
class PerPlatformSettingsTool : EditorTool
|
|||
|
{
|
|||
|
#if !UNITY_2019_2_OR_NEWER
|
|||
|
public override GUIContent toolbarIcon
|
|||
|
{
|
|||
|
get { return new GUIContent("Settings Example Tool", "Settings Manager Example Tool"); }
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
// This example creates two project settings repositories, A and B.
|
|||
|
static readonly string[] k_ProjectRepositories = new[]
|
|||
|
{
|
|||
|
"Settings A",
|
|||
|
"Settings B"
|
|||
|
};
|
|||
|
|
|||
|
// The settings manager.
|
|||
|
static Settings s_Settings;
|
|||
|
|
|||
|
// This is the key that is used to store the color setting.
|
|||
|
const string k_ToolColorSetting = "ToolColor";
|
|||
|
|
|||
|
// Current tool color
|
|||
|
Color m_ToolColor;
|
|||
|
|
|||
|
// The repository that color is read from and written to.
|
|||
|
int m_Repository;
|
|||
|
|
|||
|
Vector3 m_HandlePosition;
|
|||
|
|
|||
|
// Get the color value from a repository, setting a default value if the key does not already exist. This is
|
|||
|
// handled for you if using UserSetting{T}.
|
|||
|
Color GetToolColor(string repository, Color defaultColor)
|
|||
|
{
|
|||
|
if (!s_Settings.ContainsKey<Color>(k_ToolColorSetting, repository))
|
|||
|
s_Settings.Set<Color>(k_ToolColorSetting, defaultColor, repository);
|
|||
|
|
|||
|
return s_Settings.Get<Color>(k_ToolColorSetting, k_ProjectRepositories[m_Repository]);
|
|||
|
}
|
|||
|
|
|||
|
void OnEnable()
|
|||
|
{
|
|||
|
s_Settings = new Settings(new ISettingsRepository[]
|
|||
|
{
|
|||
|
new UserSettingsRepository(),
|
|||
|
new PackageSettingsRepository("com.unity.settings-manager-examples", k_ProjectRepositories[0]),
|
|||
|
new PackageSettingsRepository("com.unity.settings-manager-examples", k_ProjectRepositories[1])
|
|||
|
});
|
|||
|
|
|||
|
m_Repository = s_Settings.Get<int>("ToolColorRepositoryName", SettingsScope.User);
|
|||
|
|
|||
|
m_ToolColor = GetToolColor(k_ProjectRepositories[m_Repository], Color.blue);
|
|||
|
}
|
|||
|
|
|||
|
public override void OnToolGUI(EditorWindow window)
|
|||
|
{
|
|||
|
Handles.BeginGUI();
|
|||
|
|
|||
|
GUILayout.BeginVertical(GUILayout.MaxWidth(300));
|
|||
|
|
|||
|
EditorGUI.BeginChangeCheck();
|
|||
|
m_Repository = EditorGUILayout.IntPopup(m_Repository, k_ProjectRepositories, new int[] { 0, 1 });
|
|||
|
if (EditorGUI.EndChangeCheck())
|
|||
|
m_ToolColor = GetToolColor(k_ProjectRepositories[m_Repository], Color.blue);
|
|||
|
|
|||
|
EditorGUI.BeginChangeCheck();
|
|||
|
m_ToolColor = EditorGUILayout.ColorField(m_ToolColor);
|
|||
|
if (EditorGUI.EndChangeCheck())
|
|||
|
{
|
|||
|
s_Settings.Set<Color>(k_ToolColorSetting, m_ToolColor, k_ProjectRepositories[m_Repository]);
|
|||
|
s_Settings.Save();
|
|||
|
}
|
|||
|
|
|||
|
GUILayout.EndVertical();
|
|||
|
|
|||
|
Handles.EndGUI();
|
|||
|
|
|||
|
using (new Handles.DrawingScope(m_ToolColor))
|
|||
|
{
|
|||
|
m_HandlePosition = Handles.Slider(m_HandlePosition, Vector3.right);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|