ValueDropdown with null entry raises exception
I have a ValueDropdown using a method that returns a ValueDropdownList<> using a MonoBehaviour, and I want the first entry in the value dropdown to be "null", so I add one item like this:
list.Add("Static Position", null);
this gives the following error:
NullReferenceException: Object reference not set to an instance of an object Rethrow as OdinPropertyException: This error occurred while being drawn by Odin. Odin Property Path: _steps.$0.#Settings.#b Odin Drawer Chain: > BoxGroupAttributeDrawer. [Exception] NullReferenceException: Object reference not set to an instance of an object Rethrow as OdinPropertyException: This error occurred while being drawn by Odin. Odin Property Path: _steps.$0.#Settings.#b Odin Drawer Chain: > BoxGroupAttributeDrawer. IValueDropdownEqualityComparer.GetHashCode() <dbfdb55c3389430497486ef8f6b9c521>:0 System.Collections.Generic.Dictionary`2[TKey,TValue].TryInsert() <f826c2584fc94ec19a48a6576640bdc5>:0 System.Collections.Generic.Dictionary`2[TKey,TValue].set_Item() <f826c2584fc94ec19a48a6576640bdc5>:0 ValueDropdownAttributeDrawer.ReloadDropdownCollections() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Attribute Drawers/AssetListAttributeOnSingleObjectDrawer.cs:182 ValueDropdownAttributeDrawer.Initialize() <dbfdb55c3389430497486ef8f6b9c521>:0 OdinDrawer.Initialize() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Utilities/PersistentContext/PersistentContextCache.cs:243 InspectorProperty.GetActiveDrawerChain() <dbfdb55c3389430497486ef8f6b9c521>:0 InspectorProperty.Draw() <dbfdb55c3389430497486ef8f6b9c521>:0 BoxGroupAttributeDrawer.DrawPropertyLayout() <dbfdb55c3389430497486ef8f6b9c521>:0 OdinDrawer.DrawProperty() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Utilities/PersistentContext/PersistentContextCache.cs:368 InspectorProperty.Draw() <dbfdb55c3389430497486ef8f6b9c521>:0 Debug.LogException() InspectorProperty.Draw() BoxGroupAttributeDrawer.DrawPropertyLayout() OdinDrawer.DrawProperty() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Utilities/PersistentContext/PersistentContextCache.cs:368 InspectorProperty.Draw() CompositeDrawer.DrawPropertyLayout() OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 NullableReferenceDrawer`1.DrawPropertyLayout() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Value Drawers/QuaternionDrawer.cs:62 OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 ReferenceValueConflictDrawer`1.DrawPropertyLayout() OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 ReferencePathConflictDrawer`1.DrawPropertyLayout() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Attribute Drawers/ValueDropdownAttributeDrawer.cs:64 OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 FixUnityNullDrawer`1.DrawPropertyLayout() OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 ReferenceDrawer`1.DrawPropertyLayout() OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 PropertyContextMenuDrawer`1.DrawPropertyLayout() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Attribute Drawers/OnValueChangedAttributeDrawer.cs:83 OdinDrawer.DrawProperty() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Utilities/PersistentContext/PersistentContextCache.cs:368 InspectorProperty.Draw() CollectionDrawer`1.DrawItem() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Value Drawers/ColorDrawer.cs:90 CollectionDrawer`1.DrawItems() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Value Drawers/ColorDrawer.cs:77 CollectionDrawer`1.DrawPropertyLayout() OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 NullableReferenceDrawer`1.DrawPropertyLayout() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Value Drawers/QuaternionDrawer.cs:62 OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 ReferenceValueConflictDrawer`1.DrawPropertyLayout() OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 ReferencePathConflictDrawer`1.DrawPropertyLayout() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Attribute Drawers/ValueDropdownAttributeDrawer.cs:64 OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 FixUnityNullDrawer`1.DrawPropertyLayout() OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 ReferenceDrawer`1.DrawPropertyLayout() OdinDrawer.CallNextDrawer() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/MemberSerializationInfo.cs:32 PropertyContextMenuDrawer`1.DrawPropertyLayout() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Attribute Drawers/OnValueChangedAttributeDrawer.cs:83 OdinDrawer.DrawProperty() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Utilities/PersistentContext/PersistentContextCache.cs:368 InspectorProperty.Draw() InspectorUtilities.DrawPropertiesInTree() F:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Windows/SerializationDebugger/SerializationInfoMenuItem.cs:27 PropertyTree.Draw() OdinEditor.DrawTree() OdinEditor.DrawOdinInspector() OdinEditor.OnInspectorGUI() GUIUtility.ProcessEvent()
Comments (4)
-
-
Hey, I believe I've solved the issue with the modifications made from your previous issue @dominicatkearnstech. I'm unable to reproduce the issue on my end at least.
A snippet that reproduces the issue on your end would be really helpful to verify whether the fix works.
Thanks!
-
Hi Bjarke. It was really just the same snippet as above: list.Add("Some Label", null) added to a ValueDropdownList<MyType> would throw the exception whenever "Some Label" is selected from the dropdown.
-
- changed status to resolved
Great, thanks.
I'll mark this as resolved then :)
Thanks for your help!
- Log in to comment
I have the same issue. For now, I'm using a workaround by replacing null with a dummy instance, that I compare against elsewhere instead of doing "== null".