{"_id":"com.unity.settings-manager","name":"com.unity.settings-manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","provider":"upm","versions":{"2.1.1":{"_upm":{"changelog":"### Changes\n\n- Enable Auto Reference on main assembly.\n\n### Bug Fixes\n\n- [case: PBLD-56] Added tooltip to \"Options\" gear icon to specify that context menu items are relevant only to the selected category."},"unity":"2022.3","samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"hideInEditor":true,"documentationUrl":"https://docs.unity3d.com/Packages/com.unity.settings-manager@2.1/manual/index.html","name":"com.unity.settings-manager","version":"2.1.1","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"0b8638c5ce86009d785da17b17aaf629047f64ce","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-2.1.1.tgz"}},"2.1.0":{"_upm":{"changelog":"### Changes\n\n- Enable Auto Reference on main assembly.\n\n### Bug Fixes\n\n- [case: PBLD-56] Added tooltip to \"Options\" gear icon to specify that context menu items are relevant only to the selected category."},"unity":"2022.3","samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"hideInEditor":true,"documentationUrl":"https://docs.unity3d.com/Packages/com.unity.settings-manager@2.1/manual/index.html","name":"com.unity.settings-manager","version":"2.1.0","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"41738c27519039c335849eb78949382f4d7a3544","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-2.1.0.tgz"}},"2.0.1":{"_id":"com.unity.settings-manager@2.0.1","type":"asset","_from":"file:com.unity.settings-manager-2.0.1.tgz","unity":"2018.4","upmCi":{"footprint":"218062301476a2cebb1d6d5e7a74f9a45634ef7f"},"samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"_resolved":"/pkgprom/com.unity.settings-manager-2.0.1.tgz","_integrity":"sha512-YnOUI+2SuuBUtXdTiSvSrVpOaiyiKEdX9OERX/h8IgGy7bezSgN7oMkNI8gLNhm+z0T1N5fSLCgiBvbaH1hcGg==","repository":{"url":"https://github.com/Unity-Technologies/com.unity.settings-manager.git","type":"git","revision":"9b7c12d04ef880168151c127fd6b37b5931197dc"},"_npmVersion":"7.5.2","_nodeVersion":"12.21.0","hideInEditor":true,"name":"com.unity.settings-manager","version":"2.0.1","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"56a930affa1e4462d3595b5c19a1c2a4bf2015d2","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-2.0.1.tgz"}},"2.0.0":{"_id":"com.unity.settings-manager@2.0.0","type":"asset","_from":"file:com.unity.settings-manager-2.0.0.tgz","unity":"2018.4","upmCi":{"footprint":"d3f56be270bf9ae3ffd1ea1136e0d6cb19e29b4e"},"samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"_resolved":"/pkgprom/com.unity.settings-manager-2.0.0.tgz","_integrity":"sha512-J/XnwnPC6BjkGuvzOOMn/oPneQZSfRUJdppVxn2Plw9m2a19NthaDK3nMIhAYUiH11nEUhNuI5kIJe46EfaVxw==","repository":{"url":"https://github.com/Unity-Technologies/com.unity.settings-manager.git","type":"git","revision":"e9a4705329f58ee2b36ab7297ba8b5137a852760"},"_npmVersion":"7.5.2","_nodeVersion":"12.21.0","hideInEditor":true,"name":"com.unity.settings-manager","version":"2.0.0","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"2eb8dbd941552dcc0f4ebbc9d772eb5615f084f9","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-2.0.0.tgz"}},"1.0.3":{"_id":"com.unity.settings-manager@1.0.3","bugs":{"url":"https://github.com/Unity-Technologies/com.unity.settings-manager/issues"},"type":"asset","unity":"2018.3","upmCi":{"footprint":"8626270bc9561a33f85ba977df88266621679de6"},"readme":"# Settings Manager\r\n\r\nA framework for making any serializable field a setting, complete with an procedurally popuplated Settings Provider.\r\n\r\n![in action](Documentation~/images/settings.gif)\r\n\r\n## Quick Start\r\n\r\nSettings are saved in `ISettingsRepository` instances. Two default implementations are provided, one for saving user settings (`UserSettingsRepository`) and one for per-project settings (`ProjectSettingsRepository`). Settings repositories are responsible for saving and loading preferences.\r\n\r\nYou may work directly with `ISettingsRepository`, or create a `Settings` instance to manage them. Creating a `Settings` is convenient because it allows you to make use of the `UserSetting` class and attribute.\r\n\r\nThe most common case will be for packages to create a `Settings` manager with two repositories, one for user settings (`SettingsScope.User`) and one for per-project settings (`SettingsScope.Project`).\r\n\r\nBelow is an example of how most packages will use this api.\r\n\r\n```\r\nusing UnityEditor;\r\nusing UnityEditor.SettingsManagement;\r\nusing UnityEngine;\r\n\r\npublic class MySettings\r\n{\r\n    static Settings s_SettingsInstance;\r\n\r\n    public static Settings instance\r\n    {\r\n        get\r\n        {\r\n            if(s_SettingsInstance == null)\r\n                s_SettingsInstance = new Settings(\"com.unity.my-package\");\r\n            return s_SettingsInstance;\r\n        }\r\n    }\r\n\r\n    // Register a new SettingsProvider that will scrape the owning assembly for [UserSetting] marked fields.\r\n    [SettingsProvider]\r\n    static SettingsProvider CreateSettingsProvider()\r\n    {\r\n        var provider = new UserSettingsProvider(\"Preferences/My Settings\",\r\n            instance,\r\n            new [] { typeof(MySettings).Assembly });\r\n\r\n        return provider;\r\n    }\r\n}\r\n\r\npublic class Test\r\n{\r\n    [UserSetting(\"User Settings\", \"My User Int Value\")]\r\n    static UserSetting<int> userSetting = new UserSetting<int>(MySettings.instance, \"MyInteger\", 42, SettingsScope.User);\r\n\r\n    [UserSetting(\"Project Settings\", \"My Project Int Value\")]\r\n    static UserSetting<int> projectSetting = new UserSetting<int>(MySettings.instance, \"MyInteger\", 42, SettingsScope.Project);\r\n\r\n    [MenuItem(\"Debug/Print Settings Values\")]\r\n    static void PrintValues()\r\n    {\r\n        Debug.Log($\"User integer is: {(int) userSetting}, and project integer is {(int) projectSetting}\");\r\n    }\r\n}\r\n```\r\n\r\nValues are set and retrieved using generic methods on on your `Settings` instance:\r\n\r\n```\r\nMySettingsManager.instance.Get<float>(\"myFloatValue\", SettingsScopes.Project);\r\n```\r\n\r\nThe `Settings` class will handle finding an appropriate `ISettingsRepository` for the scope (and optional repository name), while `key` and `T` are used to find the value. Setting keys are unique among types, meaning you may re-use keys as long as the setting type is different.\r\n\r\n```\r\n// UserSetting<T> is a wrapper class that handles saving and loading serializable values. It is compatible with the `[UserSetting]` attribute, which is used to automatically populate a settings provider.\r\nUserSetting<int> myIntValue = new UserSetting<int>(MySettingsManager.instance, \"MyIntegerKey\", 42, SettingsScopes.User);\r\n```\r\n\r\n`UserSetting<T>` caches the current value, and keeps a copy of the default value so that it may be reset. `UserSetting<T>` fields are also eligible for use with the `[UserSetting]` attribute, which lets the `UserSettingsProvider` automatically add it to a settings inspector.\r\n\r\n## Settings Provider\r\n\r\nTo register your settings in the `Settings Window` you can either write your own `SettingsProvider` implementation, or use the provided `UserSettingsProvider` and let it automatically create your interface.\r\n\r\nMaking use of `UserSettingsProvider` comes with many benefits, including a uniform look for your settings UI, support for search, and per-field or mass reset support.\r\n\r\n```\r\nusing UnityEngine;\r\n\r\nnamespace UnityEditor.SettingsManagement.Examples\r\n{\r\n\tstatic class MySettingsProvider\r\n\t{\r\n        [SettingsProvider]\r\n        static SettingsProvider CreateSettingsProvider()\r\n        {\r\n            var provider = new UserSettingsProvider(\"Preferences/My Settings\",\r\n                MySettingsManager.instance,\r\n                new [] { typeof(MySettingsProvider).Assembly });\r\n\r\n            return provider;\r\n        }\r\n\t}\r\n}\r\n```\r\n\r\nTo register a field with `UserSettingsProvider`, simply decorate it with `[UserSetting(string displayCategory, string key)]`. `[SettingAttribute]` is only valid for static fields.\r\n\r\nFor more complex settings that require additional UI (or simply don't have a built-in editor), you can use `UserSettingBlockAttribute`. This provides access to the settings provider GUI. See `SettingsExamples.cs` for more on this.\r\n\r\n","samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"_npmUser":{},"homepage":"https://github.com/Unity-Technologies/com.unity.settings-manager#readme","repository":{"url":"git+https://github.com/Unity-Technologies/com.unity.settings-manager.git","type":"git","revision":"473664ccba1496294b741cf169740a5d54b3d0b6"},"_npmVersion":"5.6.0","_nodeVersion":"8.11.1","hideInEditor":true,"readmeFilename":"README.md","name":"com.unity.settings-manager","version":"1.0.3","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"59cbe0e443a51c5752c74323dcae91119bac1ba6","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-1.0.3.tgz"}},"1.0.2":{"_id":"com.unity.settings-manager@1.0.2","bugs":{"url":"https://github.com/Unity-Technologies/com.unity.settings-manager/issues"},"type":"asset","_from":"..\\..\\..\\..\\MIKE~1.ADK\\AppData\\Local\\Temp\\com.unity.settings-manager-1.0.2.tgz","unity":"2018.3","readme":"# Settings Manager\r\n\r\nA framework for making any serializable field a setting, complete with an procedurally popuplated Settings Provider.\r\n\r\n![in action](Documentation~/images/settings.gif)\r\n\r\n## Quick Start\r\n\r\nSettings are saved in `ISettingsRepository` instances. Two default implementations are provided, one for saving user settings (`UserSettingsRepository`) and one for per-project settings (`ProjectSettingsRepository`). Settings repositories are responsible for saving and loading preferences.\r\n\r\nYou may work directly with `ISettingsRepository`, or create a `Settings` instance to manage them. Creating a `Settings` is convenient because it allows you to make use of the `UserSetting` class and attribute.\r\n\r\nThe most common case will be for packages to create a `Settings` manager with two repositories, one for user settings (`SettingsScope.User`) and one for per-project settings (`SettingsScope.Project`).\r\n\r\nBelow is an example of how most packages will use this api.\r\n\r\n```\r\nusing UnityEditor;\r\nusing UnityEditor.SettingsManagement;\r\nusing UnityEngine;\r\n\r\npublic class MySettings\r\n{\r\n    static Settings s_SettingsInstance;\r\n\r\n    public static Settings instance\r\n    {\r\n        get\r\n        {\r\n            if(s_SettingsInstance == null)\r\n                s_SettingsInstance = new Settings(\"com.unity.my-package\");\r\n            return s_SettingsInstance;\r\n        }\r\n    }\r\n\r\n    // Register a new SettingsProvider that will scrape the owning assembly for [UserSetting] marked fields.\r\n    [SettingsProvider]\r\n    static SettingsProvider CreateSettingsProvider()\r\n    {\r\n        var provider = new UserSettingsProvider(\"Preferences/My Settings\",\r\n            instance,\r\n            new [] { typeof(MySettings).Assembly });\r\n\r\n        return provider;\r\n    }\r\n}\r\n\r\npublic class Test\r\n{\r\n    [UserSetting(\"User Settings\", \"My User Int Value\")]\r\n    static UserSetting<int> userSetting = new UserSetting<int>(MySettings.instance, \"MyInteger\", 42, SettingsScope.User);\r\n\r\n    [UserSetting(\"Project Settings\", \"My Project Int Value\")]\r\n    static UserSetting<int> projectSetting = new UserSetting<int>(MySettings.instance, \"MyInteger\", 42, SettingsScope.Project);\r\n\r\n    [MenuItem(\"Debug/Print Settings Values\")]\r\n    static void PrintValues()\r\n    {\r\n        Debug.Log($\"User integer is: {(int) userSetting}, and project integer is {(int) projectSetting}\");\r\n    }\r\n}\r\n```\r\n\r\nValues are set and retrieved using generic methods on on your `Settings` instance:\r\n\r\n```\r\nMySettingsManager.instance.Get<float>(\"myFloatValue\", SettingsScopes.Project);\r\n```\r\n\r\nThe `Settings` class will handle finding an appropriate `ISettingsRepository` for the scope (and optional repository name), while `key` and `T` are used to find the value. Setting keys are unique among types, meaning you may re-use keys as long as the setting type is different.\r\n\r\n```\r\n// UserSetting<T> is a wrapper class that handles saving and loading serializable values. It is compatible with the `[UserSetting]` attribute, which is used to automatically populate a settings provider.\r\nUserSetting<int> myIntValue = new UserSetting<int>(MySettingsManager.instance, \"MyIntegerKey\", 42, SettingsScopes.User);\r\n```\r\n\r\n`UserSetting<T>` caches the current value, and keeps a copy of the default value so that it may be reset. `UserSetting<T>` fields are also eligible for use with the `[UserSetting]` attribute, which lets the `UserSettingsProvider` automatically add it to a settings inspector.\r\n\r\n## Settings Provider\r\n\r\nTo register your settings in the `Settings Window` you can either write your own `SettingsProvider` implementation, or use the provided `UserSettingsProvider` and let it automatically create your interface.\r\n\r\nMaking use of `UserSettingsProvider` comes with many benefits, including a uniform look for your settings UI, support for search, and per-field or mass reset support.\r\n\r\n```\r\nusing UnityEngine;\r\n\r\nnamespace UnityEditor.SettingsManagement.Examples\r\n{\r\n\tstatic class MySettingsProvider\r\n\t{\r\n        [SettingsProvider]\r\n        static SettingsProvider CreateSettingsProvider()\r\n        {\r\n            var provider = new UserSettingsProvider(\"Preferences/My Settings\",\r\n                MySettingsManager.instance,\r\n                new [] { typeof(MySettingsProvider).Assembly });\r\n\r\n            return provider;\r\n        }\r\n\t}\r\n}\r\n```\r\n\r\nTo register a field with `UserSettingsProvider`, simply decorate it with `[UserSetting(string displayCategory, string key)]`. `[SettingAttribute]` is only valid for static fields.\r\n\r\nFor more complex settings that require additional UI (or simply don't have a built-in editor), you can use `UserSettingBlockAttribute`. This provides access to the settings provider GUI. See `SettingsExamples.cs` for more on this.\r\n\r\n","_shasum":"d2359118ea4d0f1e51a241d67404f27b9f95cc36","samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"scripts":{},"_npmUser":{},"homepage":"https://github.com/Unity-Technologies/com.unity.settings-manager#readme","_resolved":"file:..\\..\\..\\..\\MIKE~1.ADK\\AppData\\Local\\Temp\\com.unity.settings-manager-1.0.2.tgz","repository":{"url":"git+https://github.com/Unity-Technologies/com.unity.settings-manager.git","type":"git","revision":"e8eedc87ca7850bac0f7b2257db4edb8c300a0f3","footprint":"d4e654a69bb413c96bf81bf09a46685cd55b03b1"},"_npmVersion":"3.10.10","_nodeVersion":"6.10.0","hideInEditor":true,"readmeFilename":"README.md","name":"com.unity.settings-manager","version":"1.0.2","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"d2359118ea4d0f1e51a241d67404f27b9f95cc36","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-1.0.2.tgz"}},"1.0.1":{"_id":"com.unity.settings-manager@1.0.1","type":"asset","unity":"2018.3","samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"scripts":{},"repository":{"url":"git@github.com:Unity-Technologies/com.unity.settings-manager.git","type":"git","revision":"4e1ab5cb77b40205e6bf01d377846a851232c4e3"},"name":"com.unity.settings-manager","version":"1.0.1","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"3e1c918932dd5852c5bd18aa39053b4df3d4c4de","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-1.0.1.tgz"}},"1.0.0":{"_id":"com.unity.settings-manager@1.0.0","unity":"2018.3","samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"scripts":{},"repository":{"url":"git@github.com:Unity-Technologies/com.unity.settings-manager.git","type":"git","revision":"4ad6e8b570fe0de32e5603d583851618faf7c9ae"},"name":"com.unity.settings-manager","version":"1.0.0","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"a975e66acf20958fb63cc88a774ceefb4d5f6f19","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-1.0.0.tgz"}},"0.1.0-preview.8":{"_id":"com.unity.settings-manager@0.1.0-preview.8","unity":"2018.1","samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"scripts":{},"repository":{"url":"git@github.com:Unity-Technologies/com.unity.settings-manager.git","type":"git","revision":"3241e5358783bb3955e561f778f4bbbff57708f0"},"name":"com.unity.settings-manager","version":"0.1.0-preview.8","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"09a14c5e45183fec48432158c997bbe36bee6ff7","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-0.1.0-preview.8.tgz"}},"0.1.0-preview.4":{"_id":"com.unity.settings-manager@0.1.0-preview.4","unity":"2018.1","samples":[{"path":"Samples~","description":"Example code showing use of the Settings Manager attributes.","displayName":"User Settings Example"}],"scripts":{},"repository":{"url":"git@github.com:Unity-Technologies/com.unity.settings-manager.git","type":"git","revision":"1a247e7e746fccb061df84afd66bd79f1ee46e94"},"name":"com.unity.settings-manager","version":"0.1.0-preview.4","displayName":"Settings Manager","description":"A framework for making any serializable field a setting, complete with a pre-built settings interface.","dependencies":{},"dist":{"shasum":"7c05291f18c836122e3c6e5024b2a85413aee4e2","tarball":"https://download.packages.unity.com/com.unity.settings-manager/-/com.unity.settings-manager-0.1.0-preview.4.tgz"}}},"time":{"2.1.1":"2025-10-09T14:37:48.589Z","2.1.0":"2025-04-02T15:30:00.694Z","2.0.1":"2021-12-06T17:52:19.000Z","2.0.0":"2021-11-03T14:14:16.000Z","1.0.3":"2020-07-10T20:27:10.000Z","1.0.2":"2020-03-02T17:32:16.000Z","1.0.1":"2019-12-10T18:07:08.000Z","1.0.0":"2019-06-18T14:02:48.000Z","0.1.0-preview.8":"2019-04-16T18:02:12.000Z","0.1.0-preview.4":"2019-04-03T12:23:06.000Z"},"dist-tags":{"latest":"2.1.1"},"etag":"\"56a2-uNA8qEWoPEsC+KeJ9SO0+qYN5o0\""}