change variable from public uint to public List<uint> gave me Unsupported type vector error

Issue #463 invalid
po shih tsang
created an issue

Unity Version 2018.2.16f1

Code that had no error:
[ValueDropdown("ListOfResources")]
public uint resourceId;

Change to this and error start to show up everytime I change anything in the inspector:
[ValueDropdown("ListOfResources")]
public List<uint> resourceId = new List<uint>();

Everything seems to work other then this error stack being thrown

Unsupported type vector
UnityEditor.PrefabUtility:RecordPrefabInstancePropertyModifications()
Sirenix.OdinInspector.Editor.PropertyTree1:<ApplyChanges>b__42_1() (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Value Drawers/TableListAttributeDrawer.cs:40) Sirenix.OdinInspector.Editor.PropertyTree1:InvokeDelayedActions() (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Value Drawers/TableListAttributeDrawer.cs:494)
Sirenix.OdinInspector.Editor.InspectorUtilities:EndDrawPropertyTree(PropertyTree) (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Utilities/PersistentContext/PersistentContextCache.cs:197)
Sirenix.OdinInspector.Editor.PropertyTree:Draw(Boolean) (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Drawers/Misc Drawers/DefaultMethodDrawer.cs:207)
Sirenix.OdinInspector.Editor.OdinEditor:DrawTree() (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Core/Value Entries/PropertyValueEntry.cs:173)
Sirenix.OdinInspector.Editor.OdinEditor:DrawOdinInspector() (at C:/Sirenix/Sirenix Solution/Sirenix.OdinInspector.Editor/Core/Value Entries/PropertyValueEntry.cs:200)
Sirenix.OdinInspector.Editor.OdinEditor:OnInspectorGUI()
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

Comments (1)

  1. Tor Esa Vestergaard

    I'm afraid this is a Unity issue, and not an Odin one - Unity does not have proper serialization support for the 'uint' type, and apparently this makes itself apparent in Unity's prefab system once you put a 'uint' into a list.

    A solution might be to use Odin's serialization:

    [NonSerialized, OdinSerialize]
    public List<uint> resourceId = new List<uint>();
    

    This will cause Unity to ignore the list, and Odin can serialize it properly for you. Apart from this, there is little we can do from our end.

  2. Log in to comment