Search Unity

  1. All Pro and Enterprise subscribers: find helpful & inspiring creative, tech, and business know-how in the new Unity Success Hub. Sign in to stay up to date.
    Dismiss Notice
  2. Dismiss Notice

Thank you - Arrays and lists in the inspector can be reorderable now

Discussion in '2020.2 Beta' started by JoNax97, Jun 3, 2020.

  1. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    5,720
    When working with Unity all day, every day and being forced to look at broken UI alignment isn't particularly fun.

    upload_2020-10-2_20-54-13.png

    Unfortunately this is by design:
    (Case 1260904) Array contents don't line up with other UI elements

    I'm not buying this argument. It works for the NonReorderable list and I don't see why it wouldn't work with the new list. Here is an example with a more deeply nested type, still not seeing an issue if it would actually align with the other UI controls on the right side:

    upload_2020-10-2_21-4-40.png

    Please don't set the quality bar lower than it already is and consider to actually fix this issue. Thanks in advance.
     
  2. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    5,720
    It technically does work, but it involves much more mouse movement than having a "delete this item" button.
     
    Ruslank100 likes this.
  3. APSchmidt

    APSchmidt

    Joined:
    Aug 8, 2016
    Posts:
    4,165
    It works the same as right clicking, empty it first, remove it then.
     
  4. shawnblais

    shawnblais

    Joined:
    Oct 11, 2012
    Posts:
    322
    I don't know why the Unity team continues to always re-invent the wheel. You have amazing plugin developers dozens of versions deep, and continually fail to look at them for reference.

    Odin has had this feature forever. Just copy their rock-solid hardened implementation and call it a day?
     
    Ruslank100, Ramobo, MousePods and 2 others like this.
  5. Xarbrough

    Xarbrough

    Joined:
    Dec 11, 2014
    Posts:
    1,015
    I'd politely disagree. I feel that the delete button would be bloat and also make it too easy for designers to accidentally delete important items when trying to click on the object selector icon.

    I think Unity's new implementation is pretty solid!
     
  6. LeonhardP

    LeonhardP

    Unity Technologies

    Joined:
    Jul 4, 2016
    Posts:
    2,527
    Currently, deleting individual elements is supported via context menu and the "-" button at the bottom of the array.

    Support for deleting selected elements via the "delete" key is also on its way to 2020.2.

    @Xarbrough's arguments are pretty much on the spot as of why the team decided not to add dedicated removal buttons for individual elements.
     
  7. DoctorShinobi

    DoctorShinobi

    Joined:
    Oct 5, 2012
    Posts:
    166
    I feel like this is a matter of preference. I personally don't mind that extra bloat when it makes removing elements so much faster. I just wish this could be configurable in the editor settings and get the best of both worlds
     
    Ruslank100 and dotsquid like this.
  8. Deozaan

    Deozaan

    Joined:
    Oct 27, 2010
    Posts:
    705
    It would be nice if it could easily be toggled. Off by default to prevent accidental removal, but by simply pressing or holding a hotkey the dedicated removal buttons appear.
     
  9. Hyp-X

    Hyp-X

    Joined:
    Jun 24, 2015
    Posts:
    393
    Maybe it is known, but the indentation is wrong when a list is inside a struct/class:

    upload_2020-11-10_20-9-25.png

    Here "Quality Levels" is supposed be inside "Shadow" not at the same level

    Is this:
    - Known issue with an already reported bug?
    - By design?
    - Need a bugreport?
     
  10. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    5,720
  11. TomasKucinskas

    TomasKucinskas

    Unity Technologies

    Joined:
    Dec 20, 2017
    Posts:
    17
    Interesting, could you file a bug report? We will look into it.
     
  12. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    5,720
    (Case 1260904) Array contents don't line up with other UI elements
     
  13. Hyp-X

    Hyp-X

    Joined:
    Jun 24, 2015
    Posts:
    393
    That's a different issue... I'll create one for this.
     
    Ziplock9000 and LeonhardP like this.
  14. Hyp-X

    Hyp-X

    Joined:
    Jun 24, 2015
    Posts:
    393
    (Case 1292183) Reorderable List inside a struct not indented with the other members

    Here's a better picture showing the issue (I don't even need to open the list/array):

    upload_2020-11-12_11-45-30.png

    B is not aligned with the other members
     
    LeonhardP and Peter77 like this.
  15. Hyp-X

    Hyp-X

    Joined:
    Jun 24, 2015
    Posts:
    393
    Interesting.

    When the the Reorderable List is inside a struct which is inside a Non Reorderable List the alignment is correct:

    upload_2020-11-12_12-37-6.png

    But when the Reorderable List is inside a struct which is inside a Reorderable List the alignment is wrong:

    upload_2020-11-12_12-37-54.png
     
  16. swedishfisk

    swedishfisk

    Joined:
    Oct 14, 2016
    Posts:
    33
    I like where this is going!

    One question: how is the EditorGUI.BeginFoldoutHeaderGroup actually drawn across the width of the inspector - but the Size-property on the same line remains clickable without triggering an expansion of the foldout?

    I'm going crazy trying to replicate this behaviour in a custom propertydrawer and I'm afraid I'm missing a more simple way to do it.

    As far as I know there is no "layer", "hierarchy" or "bringToFront" support in EditorGUI to determine what is considered "on top" of something else. The only way I suspect I might replicate this behaviour is via GUI.FocusControl but I'm having a hard time finding the correct api calls to piece it together.

    I hope I'm making myself clear; if you create a list you can clearly see how the mouse-over highlight (from what I presume is a BeginFoldoutHeaderGroup) goes across the width of the inspector. This I can replicate easy as well.

    But if I draw an int-field on the same height but to the far right of the inspector (to match this new Reorderable list style) I can't select the int-field with the mouse since it will trigger expansion of the foldout at the same time and thus deselecting the int-field.

    Edit: I just discovered you can call Event.current.mousePosition and Rect.Contains which was the missing pieces combined with GUI.FocusControl. I haven't tried it yet but I suspect this is how it was done for this new Reorderable list?
     
    Last edited: Nov 30, 2020
  17. dotsquid

    dotsquid

    Joined:
    Aug 11, 2016
    Posts:
    207
    Peter77 likes this.
  18. arielsan

    arielsan

    Joined:
    Dec 3, 2013
    Posts:
    45
    Not sure if someone suggested it already but would be great to have a parameter to define which field could be used as header for the list in the case of list of structs, instead of showing Element N, showing something like the name or another field.

    Screen Shot 2020-12-01 at 20.12.12.png
    NOTE: this is not the reorderable from 2020.2.x, I am using a custom version from somewhere, but I just wanted to show the idea. Right now in Unity lists normally auto decides to use the first string (I believe) but could be great to have a way to decide to use another field or to even implement a custom method to return another thing (like the ToString() of the struct). Maybe there is already a way of doing this and you can ignore my suggestion.

    Thanks
     
    dotsquid likes this.
  19. Xarbrough

    Xarbrough

    Joined:
    Dec 11, 2014
    Posts:
    1,015
    I feel your need to specify the element names in arrays but vote for making a user implementation only via custom editor code, not via additional magic conventions or anything part of the runtime. It's fine to use the first string property as a name since this covers most cases without much performance overhead. Additionally, it would be nice if we could use the built-in array drawer and change it to suit our needs.

    However, overriding ToString has a different purpose already. It's meant as a debugging aid and should represent the object as a whole, so it would be common to include all relevant properties and their current values in the ToString method. Also, I feel like we don't need any more magic methods, which need to be looked up in the manual and cost potential performance where we don't want them.
     
    JoNax97 likes this.
  20. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    5,720
    For
    UnityEngine.Object
    references, I would also find it useful if they display the
    .name
    as element title though.
     
    phobos2077 and Bastienre4 like this.
  21. arielsan

    arielsan

    Joined:
    Dec 3, 2013
    Posts:
    45
    Yeah, I just wanted to say, it would be nice to have the option to do something, maybe through parameters to the [reorderable] attributes to decide.
     
  22. PixelLifetime

    PixelLifetime

    Joined:
    Mar 30, 2017
    Posts:
    80
    @Aras @LeonhardP @TomasKucinskas Could you please add a feature of redefining behaviour of addition and removing of element from a list in the inspector? For example, I would like to use `[SerializeReference]` with interfaces for a list and redefine how addition of those elements works, so I could choose between objects/implementations that I want to instantiate and add to the list. So a pop-up would show up with names of those instead of addition of a new element by default.

    There is an `AddCallbackDelegate`, but at a first glance I suppose it only gives you a callback when add is pressed, but doesn't allow to redefine the behaviour.

    If there already exists a feature like that sorry to bother you, and if you could please point me in the right direction because I can't seem to find anything on the internet, all of the information about reorderables is currently out of date.

    Sorry to mention all of you, but I wasn't sure who I should be referring to with such a request.

    References:
    https://github.com/Unity-Technologi...lob/master/Editor/Mono/GUI/ReorderableList.cs
     
    phobos2077 likes this.
  23. Hotcakes

    Hotcakes

    Joined:
    Jul 15, 2017
    Posts:
    7
    Is there a setting somewhere to get the delete/duplicate context menu to show up for the list with the new Reorderable drawer? Turning it off (via [NonReorderable]) allows the context menu to appear.
     

    Attached Files:

    phobos2077 likes this.
  24. andrewgotow

    andrewgotow

    Joined:
    Dec 28, 2013
    Posts:
    16
    Loving reorderable lists so far!

    One minor complaint is that they don't respect labels set in custom Editors and Property Drawers, instead always showing the name of the
    SerializedProperty
    they're drawing.

    Calling
    EditorGUI.PropertyField(rect, serializedProperty, new GUIContent("Custom Label"))
    will ignore the "Custom Label". This is a real pain for me since I have a number of classes which implement
    ISerializationCallbackReceiver
    , and contain fields like
    m_SerializedData
    which I mask with custom Property Drawers.
     
    oscarAbraham and phobos2077 like this.
  25. Zetan_Hwang

    Zetan_Hwang

    Joined:
    Oct 11, 2016
    Posts:
    1
    I use 'protected' instead of 'private', [NonReorderable] dose not work any more, how can I fix this?
     
  26. swedishfisk

    swedishfisk

    Joined:
    Oct 14, 2016
    Posts:
    33
    I reported this in november but maybe it needs more votes on the issuetracker to get prioritized?

    https://issuetracker.unity3d.com/is...d-is-not-respected-when-using-reoderable-list

    Imo this is very crucial feature that's lacking, I'm currently developing a tool that is quite broken without proper support for labels in property drawers.
     
  27. swedishfisk

    swedishfisk

    Joined:
    Oct 14, 2016
    Posts:
    33
    I actually came here to post about another potential bug I found this morning - I can't draw custom properties within the new Reorderable List. For instance say I want to render some other text than Element0, Element1 etc. for each item in the Reorderable list.

    I tried going about this by trying to draw just the Reorderable List without any contents, but this EditorGUI api is not respecting the includeChildren bool for Reorderable Lists. So there's no discernable difference in the inspector between these two calls:

    Code (CSharp):
    1. EditorGUI.PropertyField(currentPos, list, new GUIContent(fieldName), false);
    2. EditorGUI.PropertyField(currentPos, list, new GUIContent(fieldName), true);
    Should I file another bug report or am I missing something? I just want to customize the labels inside the list, but it would be nice if we could draw whatever we wanted as data content inside the Reorderable lists.
     
  28. Aras

    Aras

    Unity Technologies

    Joined:
    Nov 7, 2005
    Posts:
    4,726
    The issue tracker state says "fix in review" which means the fix is done already, but has not shipped yet.
     
  29. swedishfisk

    swedishfisk

    Joined:
    Oct 14, 2016
    Posts:
    33
    Sry I checked up on before and noticed it wasn't fixed and just copied the bookmark this morning, awesome work!

    Do you have any input regarding custom property drawers and the reorderable list? I have a vague memory of the code in my previous example working in the alpha/beta of 2020.2 but it was a while ago so I'm not sure.

    Edit: btw just noticed it seems that the expanded state of each data-item in the list doesn't follow the reordering. Say Element 4 is expanded but no other elements, If I drag Element 4 to another position it gets collapsed and the Element that gets placed where Element 4 used to be gets expanded.
     
    Last edited: Jan 12, 2021
  30. Aras

    Aras

    Unity Technologies

    Joined:
    Nov 7, 2005
    Posts:
    4,726
    I know nothing about any of this, I'm just a messenger. Pinging @TomasKucinskas to reply :)
     
  31. TomasKucinskas

    TomasKucinskas

    Unity Technologies

    Joined:
    Dec 20, 2017
    Posts:
    17
    With regards to EditorGUI.PropertyField includeChildren, it would be great if you could file a bug for that.

    As for retaining expanded state for array elements, we have functionality for that but I guess it's not working for you for some reason. Could you send a bug with a project where this is reproducible?
     
  32. TomasKucinskas

    TomasKucinskas

    Unity Technologies

    Joined:
    Dec 20, 2017
    Posts:
    17
    PropertyDrawers should work for list elements but do not use EditorGUILayout. Old array GUI didn't work well with so doesn't new one. At least yet.
     
  33. Xenerade

    Xenerade

    Joined:
    Dec 10, 2017
    Posts:
    183
    @Aras would it be possible to add an optional parameter to the [NonReorderable] attribute that allows you to keep the UI (Without the handles on the left). The reorderable list UI looks cleaner and is more intuitive than the non-reorderable UI.
     
    Last edited: Jan 18, 2021
    phobos2077 likes this.
  34. Hotcakes

    Hotcakes

    Joined:
    Jul 15, 2017
    Posts:
    7
    phobos2077 and Xenerade like this.
  35. TomasKucinskas

    TomasKucinskas

    Unity Technologies

    Joined:
    Dec 20, 2017
    Posts:
    17
    @Xenerade I doubt we're going to do that in short term. Our current focus is to address bugs and performance issues that you find with ReorderableList control.

    At a later date, we could have a discussion on which array control to use for non-reorderable arrays, but the idea that we would support two controls for non-reorderable arrays seems unlikely to me.
     
    Xenerade likes this.
  36. Xenerade

    Xenerade

    Joined:
    Dec 10, 2017
    Posts:
    183
    Ok. What I was thinking was just disable those two lines that allow you to reorder. So if you have an extra parameter in the attribute that says "keep the UI", then what you would be doing under the hood would just be to disable the control.
     
    phobos2077 likes this.
  37. JoNax97

    JoNax97

    Joined:
    Feb 4, 2016
    Posts:
    501
    Or better yet, ditch the old non-reorderable list and use a reordering-disabled version of the new one going forward. I'm all for consistency :p
     
    phobos2077, Ramobo and Xenerade like this.
  38. MiniBeatBoy

    MiniBeatBoy

    Joined:
    Sep 23, 2013
    Posts:
    10
    Hi, I'm testing Unity 2020.2.2f1 and it is great that the lists are reorderable by default:
    upload_2021-1-24_23-5-49.png

    However, when implementing the same property in a custom editor using UI Elements, it renders with the non-reorderable control:
    upload_2021-1-24_23-7-13.png

    In the custom editor my code is this:
    Code (CSharp):
    1.  
    2. VisualElement inspector = new VisualElement();
    3. // SoundOriginals
    4. PropertyField soundOriginalsField = new PropertyField(serializedObject.FindProperty("m_SoundOriginals"));
    5. inspector.Add(soundOriginalsField);
    6.  
    I would expect that if I use the PropertyField UI element, it would render the property as it would when no custom editor is in place. Am I missing something?
     
  39. Xenerade

    Xenerade

    Joined:
    Dec 10, 2017
    Posts:
    183
    This was added in 2021.1. Until then, use IMGUIContainer.
     
    phobos2077 likes this.
  40. MiniBeatBoy

    MiniBeatBoy

    Joined:
    Sep 23, 2013
    Posts:
    10
    Thanks! this solved my issue
     
    Xenerade likes this.
  41. PixelLifetime

    PixelLifetime

    Joined:
    Mar 30, 2017
    Posts:
    80
    For anyone interested in this, I have looked over a source code a bit and found out that by this logic if you have
    onAddDropdownCallback
    or
    onAddCallback
    initialized then it wouldn't do
    DoAddButton
    . And instead you can have your own logic for add button.

    Code (CSharp):
    1. if (GUI.Button(addRect, list.onAddDropdownCallback != null ? iconToolbarPlusMore : iconToolbarPlus, preButton))
    2.                         {
    3.                             if (list.onAddDropdownCallback != null)
    4.                                 list.onAddDropdownCallback(addRect, list);
    5.                             else if (list.onAddCallback != null)
    6.                                 list.onAddCallback(list);
    7.                             else
    8.                                 DoAddButton(list);
    9.  
    10.                             list.onChangedCallback?.Invoke(list);
    11.                             list.ClearCacheRecursive();
    12.                         }
     
  42. Dmitry-Pyalov

    Dmitry-Pyalov

    Joined:
    Dec 13, 2011
    Posts:
    118
    Deleting an element with double Shift + Del (tested on macOS) near the bottom breaks the list on 2020.2.1.

    2021-02-05_13-25-37.png 2021-02-05_13-25-57.png

    Code (CSharp):
    1. Retrieving array element that was out of bounds
    2. UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
    3. UnityEditor.SerializedProperty:get_hashCodeForPropertyPathWithoutArrayIndex () (at /Users/bokken/buildslave/unity/build/Editor/Mono/SerializedProperty.bindings.cs:530)
    4. UnityEditor.PropertyHandlerCache:GetPropertyHash (UnityEditor.SerializedProperty) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/PropertyDrawerCache.cs:31)
    5. UnityEditor.PropertyHandlerCache:GetHandler (UnityEditor.SerializedProperty) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/PropertyDrawerCache.cs:12)
    6. UnityEditor.ScriptAttributeUtility:GetHandler (UnityEditor.SerializedProperty) (at /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/ScriptAttributeUtility.cs:433)
    7. UnityEditorInternal.ReorderableList:EnsureValidProperty (UnityEditor.SerializedProperty) (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:716)
    8. UnityEditorInternal.ReorderableList:DoListElements (UnityEngine.Rect,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:863)
    9. UnityEditorInternal.ReorderableList:DoList (UnityEngine.Rect,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:685)
    10. UnityEditorInternal.ReorderableListWrapper:Draw (UnityEngine.Rect,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/ReorderableListWrapper.cs:193)
    11. UnityEditor.PropertyHandler:OnGUI (UnityEngine.Rect,UnityEditor.SerializedProperty,UnityEngine.GUIContent,bool,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:190)
    12. UnityEditor.GenericInspector:OnOptimizedInspectorGUI (UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/GenericInspector.cs:112)
    13. UnityEditor.UIElements.InspectorElement/<>c__DisplayClass58_0:<CreateIMGUIInspectorFromEditor>b__0 () (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Editor/Inspector/InspectorElement.cs:528)
    14. UnityEngine.UIElements.IMGUIContainer:DoOnGUI (UnityEngine.Event,UnityEngine.Matrix4x4,UnityEngine.Rect,bool,UnityEngine.Rect,System.Action,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:333)
    15. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event,UnityEngine.Matrix4x4,UnityEngine.Rect,System.Action,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:663)
    16. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event,System.Action,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:635)
    17. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:628)
    18. UnityEngine.UIElements.IMGUIContainer:SendEventToIMGUIRaw (UnityEngine.UIElements.EventBase,bool,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:594)
    19. UnityEngine.UIElements.IMGUIContainer:SendEventToIMGUI (UnityEngine.UIElements.EventBase,bool,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:583)
    20. UnityEngine.UIElements.CommandEventDispatchingStrategy:DispatchEvent (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Events/CommandEventDispatchingStrategy.cs:21)
    21. UnityEngine.UIElements.EventDispatcher:ApplyDispatchingStrategies (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.IPanel,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:373)
    22. UnityEngine.UIElements.EventDispatcher:ProcessEvent (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:336)
    23. UnityEngine.UIElements.EventDispatcher:Dispatch (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.IPanel,UnityEngine.UIElements.DispatchMode) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:216)
    24. UnityEngine.UIElements.BaseVisualElementPanel:SendEvent (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.DispatchMode) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Panel.cs:371)
    25. UnityEngine.UIElements.UIElementsUtility:DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:461)
    26. UnityEngine.UIElements.UIElementsUtility:UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:209)
    27. UnityEngine.UIElements.UIEventRegistration:ProcessEvent (int,intptr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:74)
    28. UnityEngine.UIElements.UIEventRegistration/<>c:<.cctor>b__1_2 (int,intptr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:28)
    29. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)
    30. UnityEditor.SelectionCommands:DeleteSelectedAssetsShortcut () (at /Users/bokken/buildslave/unity/build/Editor/Mono/SelectionCommands/SelectionCommands.cs:38)
    31. UnityEditor.ShortcutManagement.ShortcutAttribute:NoArgumentShortcutMethodProxy (UnityEditor.ShortcutManagement.ShortcutArguments) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutAttribute.cs:56)
    32. UnityEditor.ShortcutManagement.Trigger:HandleKeyEvent (UnityEngine.Event,UnityEditor.ShortcutManagement.IContextManager) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/Trigger.cs:96)
    33. UnityEditor.ShortcutManagement.ShortcutController:HandleKeyEvent (UnityEngine.Event) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutController.cs:257)
    34. UnityEditor.ShortcutManagement.ShortcutIntegration:EventHandler () (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutController.cs:104)
    35. UnityEditor.EditorApplication:Internal_CallGlobalEventHandler () (at /Users/bokken/buildslave/unity/build/Editor/Mono/EditorApplication.cs:428)
    36.  
    37. [/Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs line 37]
    38.  
    39. SerializedProperty creatures.Array.data[31] has disappeared!
    40. UnityEngine.StackTraceUtility:ExtractStackTrace () (at /Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs:37)
    41. UnityEditor.SerializedProperty:get_hashCodeForPropertyPathWithoutArrayIndex () (at /Users/bokken/buildslave/unity/build/Editor/Mono/SerializedProperty.bindings.cs:530)
    42. UnityEditor.PropertyHandlerCache:GetPropertyHash (UnityEditor.SerializedProperty) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/PropertyDrawerCache.cs:31)
    43. UnityEditor.PropertyHandlerCache:GetHandler (UnityEditor.SerializedProperty) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/PropertyDrawerCache.cs:12)
    44. UnityEditor.ScriptAttributeUtility:GetHandler (UnityEditor.SerializedProperty) (at /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/ScriptAttributeUtility.cs:433)
    45. UnityEditorInternal.ReorderableList:EnsureValidProperty (UnityEditor.SerializedProperty) (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:716)
    46. UnityEditorInternal.ReorderableList:DoListElements (UnityEngine.Rect,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:863)
    47. UnityEditorInternal.ReorderableList:DoList (UnityEngine.Rect,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:685)
    48. UnityEditorInternal.ReorderableListWrapper:Draw (UnityEngine.Rect,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/ReorderableListWrapper.cs:193)
    49. UnityEditor.PropertyHandler:OnGUI (UnityEngine.Rect,UnityEditor.SerializedProperty,UnityEngine.GUIContent,bool,UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:190)
    50. UnityEditor.GenericInspector:OnOptimizedInspectorGUI (UnityEngine.Rect) (at /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/GenericInspector.cs:112)
    51. UnityEditor.UIElements.InspectorElement/<>c__DisplayClass58_0:<CreateIMGUIInspectorFromEditor>b__0 () (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Editor/Inspector/InspectorElement.cs:528)
    52. UnityEngine.UIElements.IMGUIContainer:DoOnGUI (UnityEngine.Event,UnityEngine.Matrix4x4,UnityEngine.Rect,bool,UnityEngine.Rect,System.Action,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:333)
    53. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event,UnityEngine.Matrix4x4,UnityEngine.Rect,System.Action,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:663)
    54. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event,System.Action,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:635)
    55. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent (UnityEngine.Event,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:628)
    56. UnityEngine.UIElements.IMGUIContainer:SendEventToIMGUIRaw (UnityEngine.UIElements.EventBase,bool,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:594)
    57. UnityEngine.UIElements.IMGUIContainer:SendEventToIMGUI (UnityEngine.UIElements.EventBase,bool,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:583)
    58. UnityEngine.UIElements.CommandEventDispatchingStrategy:DispatchEvent (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Events/CommandEventDispatchingStrategy.cs:21)
    59. UnityEngine.UIElements.EventDispatcher:ApplyDispatchingStrategies (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.IPanel,bool) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:373)
    60. UnityEngine.UIElements.EventDispatcher:ProcessEvent (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:336)
    61. UnityEngine.UIElements.EventDispatcher:Dispatch (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.IPanel,UnityEngine.UIElements.DispatchMode) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:216)
    62. UnityEngine.UIElements.BaseVisualElementPanel:SendEvent (UnityEngine.UIElements.EventBase,UnityEngine.UIElements.DispatchMode) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Panel.cs:371)
    63. UnityEngine.UIElements.UIElementsUtility:DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:461)
    64. UnityEngine.UIElements.UIElementsUtility:UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:209)
    65. UnityEngine.UIElements.UIEventRegistration:ProcessEvent (int,intptr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:74)
    66. UnityEngine.UIElements.UIEventRegistration/<>c:<.cctor>b__1_2 (int,intptr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:28)
    67. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)
    68. UnityEditor.SelectionCommands:DeleteSelectedAssetsShortcut () (at /Users/bokken/buildslave/unity/build/Editor/Mono/SelectionCommands/SelectionCommands.cs:38)
    69. UnityEditor.ShortcutManagement.ShortcutAttribute:NoArgumentShortcutMethodProxy (UnityEditor.ShortcutManagement.ShortcutArguments) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutAttribute.cs:56)
    70. UnityEditor.ShortcutManagement.Trigger:HandleKeyEvent (UnityEngine.Event,UnityEditor.ShortcutManagement.IContextManager) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/Trigger.cs:96)
    71. UnityEditor.ShortcutManagement.ShortcutController:HandleKeyEvent (UnityEngine.Event) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutController.cs:257)
    72. UnityEditor.ShortcutManagement.ShortcutIntegration:EventHandler () (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutController.cs:104)
    73. UnityEditor.EditorApplication:Internal_CallGlobalEventHandler () (at /Users/bokken/buildslave/unity/build/Editor/Mono/EditorApplication.cs:428)
    74.  
    75. [/Users/bokken/buildslave/unity/build/Runtime/Export/Scripting/StackTrace.cs line 37]
    76.  
    77. NullReferenceException: Object reference not set to an instance of an object
    78.   at UnityEditorInternal.ReorderableListWrapper.set_Property (UnityEditor.SerializedProperty value) [0x00058] in /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/ReorderableListWrapper.cs:46
    79.   at UnityEditor.PropertyHandler.OnGUI (UnityEngine.Rect position, UnityEditor.SerializedProperty property, UnityEngine.GUIContent label, System.Boolean includeChildren, UnityEngine.Rect visibleArea) [0x00166] in /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:189
    80.   at UnityEditor.PropertyHandler.OnGUI (UnityEngine.Rect position, UnityEditor.SerializedProperty property, UnityEngine.GUIContent label, System.Boolean includeChildren) [0x0001c] in /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:133
    81.   at UnityEditorInternal.ReorderableList+Defaults.DrawElement (UnityEngine.Rect rect, UnityEditor.SerializedProperty element, System.Object listItem, System.Boolean selected, System.Boolean focused, System.Boolean draggable, System.Boolean editable) [0x0001b] in /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:358
    82.   at UnityEditorInternal.ReorderableList.DoListElements (UnityEngine.Rect listRect, UnityEngine.Rect visibleRect) [0x00677] in /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:888
    83.   at UnityEditorInternal.ReorderableList.DoList (UnityEngine.Rect rect, UnityEngine.Rect visibleRect) [0x000ab] in /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:685
    84.   at UnityEditorInternal.ReorderableListWrapper.Draw (UnityEngine.Rect r, UnityEngine.Rect visibleArea) [0x00387] in /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/ReorderableListWrapper.cs:193
    85.   at UnityEditor.PropertyHandler.OnGUI (UnityEngine.Rect position, UnityEditor.SerializedProperty property, UnityEngine.GUIContent label, System.Boolean includeChildren, UnityEngine.Rect visibleArea) [0x0016f] in /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:190
    86.   at UnityEditor.GenericInspector.OnOptimizedInspectorGUI (UnityEngine.Rect contentRect) [0x0010c] in /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/GenericInspector.cs:112
    87.   at UnityEditor.UIElements.InspectorElement+<>c__DisplayClass58_0.<CreateIMGUIInspectorFromEditor>b__0 () [0x0024a] in /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Editor/Inspector/InspectorElement.cs:528
    88. UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)
    89. UnityEngine.DebugLogHandler:LogException(Exception, Object)
    90. UnityEngine.Logger:LogException(Exception, Object)
    91. UnityEngine.Debug:LogException(Exception)
    92. UnityEditor.UIElements.<>c__DisplayClass58_0:<CreateIMGUIInspectorFromEditor>b__0() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Editor/Inspector/InspectorElement.cs:546)
    93. UnityEngine.UIElements.IMGUIContainer:DoOnGUI(Event, Matrix4x4, Rect, Boolean, Rect, Action, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:333)
    94. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Matrix4x4, Rect, Action, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:663)
    95. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Action, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:635)
    96. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:628)
    97. UnityEngine.UIElements.IMGUIContainer:SendEventToIMGUIRaw(EventBase, Boolean, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:594)
    98. UnityEngine.UIElements.IMGUIContainer:SendEventToIMGUI(EventBase, Boolean, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:583)
    99. UnityEngine.UIElements.CommandEventDispatchingStrategy:DispatchEvent(EventBase, IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Events/CommandEventDispatchingStrategy.cs:21)
    100. UnityEngine.UIElements.EventDispatcher:ApplyDispatchingStrategies(EventBase, IPanel, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:373)
    101. UnityEngine.UIElements.EventDispatcher:ProcessEvent(EventBase, IPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:336)
    102. UnityEngine.UIElements.EventDispatcher:Dispatch(EventBase, IPanel, DispatchMode) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/EventDispatcher.cs:216)
    103. UnityEngine.UIElements.BaseVisualElementPanel:SendEvent(EventBase, DispatchMode) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Panel.cs:371)
    104. UnityEngine.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:461)
    105. UnityEngine.UIElements.UIElementsUtility:UnityEngine.UIElements.IUIElementsUtility.ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:209)
    106. UnityEngine.UIElements.UIEventRegistration:ProcessEvent(Int32, IntPtr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:74)
    107. UnityEngine.UIElements.<>c:<.cctor>b__1_2(Int32, IntPtr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:28)
    108. UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)
    109. UnityEditorInternal.InternalEditorUtility:ExecuteCommandOnKeyWindow(String)
    110. UnityEditor.SelectionCommands:DeleteSelectedAssetsShortcut() (at /Users/bokken/buildslave/unity/build/Editor/Mono/SelectionCommands/SelectionCommands.cs:38)
    111. UnityEditor.ShortcutManagement.ShortcutAttribute:NoArgumentShortcutMethodProxy(ShortcutArguments) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutAttribute.cs:56)
    112. UnityEditor.ShortcutManagement.Trigger:HandleKeyEvent(Event, IContextManager) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/Trigger.cs:96)
    113. UnityEditor.ShortcutManagement.ShortcutController:HandleKeyEvent(Event) (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutController.cs:257)
    114. UnityEditor.ShortcutManagement.ShortcutIntegration:EventHandler() (at /Users/bokken/buildslave/unity/build/Modules/ShortcutManagerEditor/ShortcutController.cs:104)
    115. UnityEditor.EditorApplication:Internal_CallGlobalEventHandler() (at /Users/bokken/buildslave/unity/build/Editor/Mono/EditorApplication.cs:428)
    116.  
    117. (Filename: /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/ReorderableListWrapper.cs Line: 46)
    118.  
    119. NullReferenceException: Object reference not set to an instance of an object
    120.   at UnityEditorInternal.ReorderableListWrapper.set_Property (UnityEditor.SerializedProperty value) [0x00058] in /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/ReorderableListWrapper.cs:46
    121.   at UnityEditor.PropertyHandler.OnGUI (UnityEngine.Rect position, UnityEditor.SerializedProperty property, UnityEngine.GUIContent label, System.Boolean includeChildren, UnityEngine.Rect visibleArea) [0x00166] in /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:189
    122.   at UnityEditor.PropertyHandler.OnGUI (UnityEngine.Rect position, UnityEditor.SerializedProperty property, UnityEngine.GUIContent label, System.Boolean includeChildren) [0x0001c] in /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:133
    123.   at UnityEditorInternal.ReorderableList+Defaults.DrawElement (UnityEngine.Rect rect, UnityEditor.SerializedProperty element, System.Object listItem, System.Boolean selected, System.Boolean focused, System.Boolean draggable, System.Boolean editable) [0x0001b] in /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:358
    124.   at UnityEditorInternal.ReorderableList.DoListElements (UnityEngine.Rect listRect, UnityEngine.Rect visibleRect) [0x00677] in /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:888
    125.   at UnityEditorInternal.ReorderableList.DoList (UnityEngine.Rect rect, UnityEngine.Rect visibleRect) [0x000ab] in /Users/bokken/buildslave/unity/build/Editor/Mono/GUI/ReorderableList.cs:685
    126.   at UnityEditorInternal.ReorderableListWrapper.Draw (UnityEngine.Rect r, UnityEngine.Rect visibleArea) [0x00387] in /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/ReorderableListWrapper.cs:193
    127.   at UnityEditor.PropertyHandler.OnGUI (UnityEngine.Rect position, UnityEditor.SerializedProperty property, UnityEngine.GUIContent label, System.Boolean includeChildren, UnityEngine.Rect visibleArea) [0x0016f] in /Users/bokken/buildslave/unity/build/Editor/Mono/ScriptAttributeGUI/PropertyHandler.cs:190
    128.   at UnityEditor.GenericInspector.OnOptimizedInspectorGUI (UnityEngine.Rect contentRect) [0x0010c] in /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/GenericInspector.cs:112
    129.   at UnityEditor.UIElements.InspectorElement+<>c__DisplayClass58_0.<CreateIMGUIInspectorFromEditor>b__0 () [0x0024a] in /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Editor/Inspector/InspectorElement.cs:528
    130. UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)
    131. UnityEngine.DebugLogHandler:LogException(Exception, Object)
    132. UnityEngine.Logger:LogException(Exception, Object)
    133. UnityEngine.Debug:LogException(Exception)
    134. UnityEditor.UIElements.<>c__DisplayClass58_0:<CreateIMGUIInspectorFromEditor>b__0() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Editor/Inspector/InspectorElement.cs:546)
    135. UnityEngine.UIElements.IMGUIContainer:DoOnGUI(Event, Matrix4x4, Rect, Boolean, Rect, Action, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:333)
    136. UnityEngine.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Matrix4x4, Rect, Action, Boolean) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:652)
    137. UnityEngine.UIElements.IMGUIContainer:DoIMGUIRepaint() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/IMGUIContainer.cs:530)
    138. UnityEngine.UIElements.UIR.RenderChainCommand:ExecuteNonDrawMesh(DrawParams, Single, Exception&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Renderer/UIRenderer/UIRenderers.cs:114)
    139. UnityEngine.UIElements.UIR.UIRenderDevice:EvaluateChain(RenderChainCommand, Material, Material, Texture, Texture, Texture, Single, NativeSlice`1, NativeSlice`1, MaterialPropertyBlock, Boolean, Exception&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Renderer/UIRenderer/UIRenderDevice.cs:809)
    140. UnityEngine.UIElements.UIR.RenderChain:Render() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Renderer/UIRChainBuilder.cs:490)
    141. UnityEngine.UIElements.UIRRepaintUpdater:Update() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Renderer/UIRRepaintUpdater.cs:62)
    142. UnityEngine.UIElements.VisualTreeUpdater:UpdateVisualTreePhase(VisualTreeUpdatePhase) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/VisualTreeUpdater.cs:83)
    143. UnityEngine.UIElements.Panel:UpdateForRepaint() (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Panel.cs:833)
    144. UnityEngine.UIElements.Panel:Repaint(Event) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/Panel.cs:869)
    145. UnityEngine.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:441)
    146. UnityEngine.UIElements.UIElementsUtility:UnityEngine.UIElements.IUIElementsUtility.ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:209)
    147. UnityEngine.UIElements.UIEventRegistration:ProcessEvent(Int32, IntPtr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:74)
    148. UnityEngine.UIElements.<>c:<.cctor>b__1_2(Int32, IntPtr) (at /Users/bokken/buildslave/unity/build/External/MirroredPackageSources/com.unity.ui/Core/UIElementsUtility.cs:28)
    149. UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)
    150.  
    151. (Filename: /Users/bokken/buildslave/unity/build/Editor/Mono/Inspector/ReorderableListWrapper.cs Line: 46)
    152.  
     
    phobos2077 likes this.
  43. LeonhardP

    LeonhardP

    Unity Technologies

    Joined:
    Jul 4, 2016
    Posts:
    2,527
    Could you please submit a bug report for this issue with reproduction steps attached?
     
  44. Dmitry-Pyalov

    Dmitry-Pyalov

    Joined:
    Dec 13, 2011
    Posts:
    118
    1313981
     
    Last edited: Feb 11, 2021
  45. JoNax97

    JoNax97

    Joined:
    Feb 4, 2016
    Posts:
    501
    Hey! Please beware that the link you posted gives everyone access to you entire case history and personal info.

    I'd recommend you edit it and leave just the case number. Unity staff can still use it to find the case.
     
  46. Dmitry-Pyalov

    Dmitry-Pyalov

    Joined:
    Dec 13, 2011
    Posts:
    118
    Thank you for noticing. Although I don't think there is any private info in the list of my cases.
    If I'm not mistaken, Unity did auto-process such links in forum posts, but now this doesn't seem to be the case anymore.
     
  47. MaNaRz

    MaNaRz

    Joined:
    Aug 24, 2017
    Posts:
    14
    How did you get it to work?
    I updated to 2021.1 beta and still cannot draw the default List with the additional functionality.
     
    Xenerade likes this.
  48. d2clon

    d2clon

    Joined:
    Aug 19, 2017
    Posts:
    7
    Any plan to port this to 2019.4 LTS?
     
  49. NibbleByteSSG

    NibbleByteSSG

    Joined:
    Jan 7, 2020
    Posts:
    29
    EDIT:
    Solved (kind of) in the next post!!!


    Hi,

    We have found a bug with the new default reorderable list + EditorWindows + EditorGUILayout.PropertyField(). Take a look at this simple EditorWindow code:
    Code (CSharp):
    1. public class FooWindow : EditorWindow
    2. {
    3.     public int[] Numbers;
    4.  
    5.     [MenuItem("Foo/Window", false, 200)]
    6.     public static void ShowProjectPreferences()
    7.     {
    8.         var window = GetWindow<FooWindow>(true, "Foo Window");
    9.         window.Show();
    10.     }
    11.     private void OnGUI()
    12.     {
    13.         var so = new SerializedObject(this);
    14.         EditorGUILayout.PropertyField(so.FindProperty("Numbers"));
    15.         so.ApplyModifiedProperties();
    16.     }
    17. }
    18.  
    You can add elements to the "Numbers" array in the window, but modifying them doesn't stick.
    In 2019 it works fine but in 2020.2.2f1 with the new list it breaks.

    I've talked with Unity support (request 999413) and they have filed a bug (don't know what case) and told me to use [NonReorderable] attribute for now until this gets fixed.

    Why do we do this? Because there is no easy way to draw a "list of things that user can edit + undo support" with Editor GUI methods in an EditorWindow. Another approach would be to create a scriptable object and use it's drawer, but that seems too much hassle and just feels wrong.

    Hope you find this useful until the bug is fixed.

    Off-topic question for the Unity devs: I recently discovered relative issue - in 2018, the EditorGUILayout.PropertyField() ignored custom property drawers if the SerailizedObject is EditorWindow, but works corretly if the target is ScriptableObject or MonoBehaviour. This was fixed in 2019, but it leaves me wondering, why are there different implementations / behaviours with EditorGUILayout.PropertyField() for EditorWindow and Inspector Editors. Discussion is at support request number 883679, more examples here.
     
    Last edited: Mar 18, 2021
  50. Xarbrough

    Xarbrough

    Joined:
    Dec 11, 2014
    Posts:
    1,015
    I'm all for Unity making everything as bullet-proof as possible, but in this case, the much easier fix is not creating the SerializedObject every GUI frame. Instead, create the SO in OnEnable and everything works fine. That's much better for performance anyway.

    Code (CSharp):
    1. public class FooWindow : EditorWindow
    2. {
    3.     public int[] Numbers;
    4.  
    5.     [MenuItem("Foo/Window", false, 200)]
    6.     public static void ShowProjectPreferences()
    7.     {
    8.         var window = GetWindow<FooWindow>(true, "Foo Window");
    9.         window.Show();
    10.     }
    11.  
    12.     private SerializedObject serializedObject;
    13.  
    14.     private void OnEnable()
    15.     {
    16.         serializedObject = new SerializedObject(this);
    17.     }
    18.  
    19.     private void OnDisable()
    20.     {
    21.         if (serializedObject != null)
    22.             serializedObject.Dispose();
    23.     }
    24.  
    25.     private void OnGUI()
    26.     {
    27.         serializedObject.Update();
    28.         EditorGUILayout.PropertyField(serializedObject.FindProperty("Numbers"));
    29.         serializedObject.ApplyModifiedProperties();
    30.     }
    31. }
     
unityunity