Files
.vs
Assets
Library
APIUpdater
Artifacts
Bee
BuildPlayerData
PackageCache
com.unity.collab-proxy@2.5.2
com.unity.editorcoroutines@1.0.0
com.unity.ext.nunit@1.0.6
com.unity.feature.development@1.0.1
com.unity.ide.rider@3.0.31
com.unity.ide.visualstudio@2.0.22
com.unity.ide.vscode@1.2.5
com.unity.modules.ai@1.0.0
com.unity.modules.androidjni@1.0.0
com.unity.modules.animation@1.0.0
com.unity.modules.assetbundle@1.0.0
com.unity.modules.audio@1.0.0
com.unity.modules.cloth@1.0.0
com.unity.modules.director@1.0.0
com.unity.modules.imageconversion@1.0.0
com.unity.modules.imgui@1.0.0
com.unity.modules.jsonserialize@1.0.0
com.unity.modules.particlesystem@1.0.0
com.unity.modules.physics2d@1.0.0
com.unity.modules.physics@1.0.0
com.unity.modules.screencapture@1.0.0
com.unity.modules.subsystems@1.0.0
com.unity.modules.terrain@1.0.0
com.unity.modules.terrainphysics@1.0.0
com.unity.modules.tilemap@1.0.0
com.unity.modules.ui@1.0.0
com.unity.modules.uielements@1.0.0
com.unity.modules.umbra@1.0.0
com.unity.modules.unityanalytics@1.0.0
com.unity.modules.unitywebrequest@1.0.0
com.unity.modules.unitywebrequestassetbundle@1.0.0
com.unity.modules.unitywebrequestaudio@1.0.0
com.unity.modules.unitywebrequesttexture@1.0.0
com.unity.modules.unitywebrequestwww@1.0.0
com.unity.modules.vehicles@1.0.0
com.unity.modules.video@1.0.0
com.unity.modules.vr@1.0.0
com.unity.modules.wind@1.0.0
com.unity.modules.xr@1.0.0
com.unity.performance.profile-analyzer@1.2.2
com.unity.settings-manager@2.0.1
Content
Documentation~
Editor
Samples~
MultipleProjectSettingFiles
PlatformSpecificTool.cs
PackageWithProjectAndUserSettings
.sample.json
Unity.Settings.Example.asmdef
Tests
.signature
CHANGELOG.md
CHANGELOG.md.meta
Content.meta
Editor.meta
LICENSE.md
LICENSE.md.meta
README.md
README.md.meta
Tests.meta
package.json
package.json.meta
com.unity.test-framework@1.1.33
com.unity.testtools.codecoverage@1.2.6
com.unity.textmeshpro@3.0.6
com.unity.timeline@1.7.6
com.unity.ugui@1.0.0
com.unity.visualscripting@1.9.4
PackageManager
PlayModeViewStates
PlayerDataCache
ScriptAssemblies
Search
ShaderCache
SplashScreenCache
StateCache
UIElements
AnnotationManager
ArtifactDB
ArtifactDB-lock
BuildPlayer.prefs
BuildSettings.asset
EditorOnlyScriptingSettings.json
EditorOnlyVirtualTextureState.json
EditorSnapSettings.asset
EditorUserBuildSettings.asset
InspectorExpandedItems.asset
LastBuild.buildreport
LastSceneManagerSetup.txt
LibraryFormatVersion.txt
MonoManager.asset
SceneVisibilityState.asset
ScriptMapper
ShaderCache.db
SourceAssetDB
SourceAssetDB-lock
SpriteAtlasDatabase.asset
Style.catalog
expandedItems
ilpp.pid
Logs
Packages
ProjectSettings
UserSettings
obj
.vsconfig
Assembly-CSharp.Player.csproj
Assembly-CSharp.csproj
TM1.sln
Unity.CollabProxy.Editor.csproj
Unity.EditorCoroutines.Editor.csproj
Unity.Performance.Profile-Analyzer.Editor.csproj
Unity.PlasticSCM.Editor.csproj
Unity.Rider.Editor.csproj
Unity.Settings.Editor.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Model.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Mono.Reflection.csproj
Unity.TestTools.CodeCoverage.Editor.csproj
Unity.TextMeshPro.Editor.csproj
Unity.TextMeshPro.Player.csproj
Unity.TextMeshPro.csproj
Unity.Timeline.Editor.csproj
Unity.Timeline.Player.csproj
Unity.Timeline.csproj
Unity.VSCode.Editor.csproj
Unity.VisualScripting.Core.Editor.csproj
Unity.VisualScripting.Core.Player.csproj
Unity.VisualScripting.Core.csproj
Unity.VisualScripting.Flow.Editor.csproj
Unity.VisualScripting.Flow.Player.csproj
Unity.VisualScripting.Flow.csproj
Unity.VisualScripting.SettingsProvider.Editor.csproj
Unity.VisualScripting.Shared.Editor.csproj
Unity.VisualScripting.State.Editor.csproj
Unity.VisualScripting.State.Player.csproj
Unity.VisualScripting.State.csproj
Unity.VisualStudio.Editor.csproj
UnityEditor.TestRunner.csproj
UnityEditor.UI.csproj
UnityEngine.TestRunner.Player.csproj
UnityEngine.TestRunner.csproj
UnityEngine.UI.Player.csproj
UnityEngine.UI.csproj

95 lines
3.3 KiB
C#
Raw Normal View History

2025-01-17 13:10:20 +01:00
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);
}
}
}
}