Dictionary Drawer Settings

Customize the behavior for dictionaries in the inspector.

[InfoBox("In order to serialize dictionaries, all we need to do is to inherit our class from SerializedMonoBehaviour.")] public Dictionary<int, Material> IntMaterialLookup; public Dictionary<string, string> StringStringDictionary; [DictionaryDrawerSettings(KeyLabel = "Custom Key Name", ValueLabel = "Custom Value Label")] public Dictionary<SomeEnum, MyCustomType> CustomLabels = new Dictionary<SomeEnum, MyCustomType>() { { SomeEnum.First, new MyCustomType() }, { SomeEnum.Second, new MyCustomType() }, }; [DictionaryDrawerSettings(DisplayMode = DictionaryDisplayOptions.ExpandedFoldout)] public Dictionary<string, List<int>> StringListDictionary = new Dictionary<string, List<int>>() { { "Numbers", new List<int>(){ 1, 2, 3, 4, } }, }; [DictionaryDrawerSettings(DisplayMode = DictionaryDisplayOptions.Foldout)] public Dictionary<SomeEnum, MyCustomType> EnumObjectLookup = new Dictionary<SomeEnum, MyCustomType>() { { SomeEnum.Third, new MyCustomType() }, { SomeEnum.Fourth, new MyCustomType() }, }; [InlineProperty(LabelWidth = 90)] public struct MyCustomType { public int SomeMember; public GameObject SomePrefab; } public enum SomeEnum { First, Second, Third, Fourth, AndSoOn } [OnInspectorInit] private void CreateData() { IntMaterialLookup = new Dictionary<int, Material>() { { 1, ExampleHelper.GetMaterial() }, { 7, ExampleHelper.GetMaterial() }, }; StringStringDictionary = new Dictionary<string, string>() { { "One", ExampleHelper.GetString() }, { "Seven", ExampleHelper.GetString() }, }; }