Search Unity

Resolved (never mind) Making a list of VisualElement results in NullReferenceException

Discussion in 'UI Toolkit' started by LukasXenophanes, Jul 9, 2021.

  1. LukasXenophanes

    LukasXenophanes

    Joined:
    Apr 14, 2021
    Posts:
    7
    I'm trying to make list a of VisualElement(s), so i can hide some of them. When i try to hide the first one it works just fine, but when i try to add them to a list i get an exception.

    My .uxml looks like this:
    upload_2021-7-9_18-7-18.png

    The code PickCardColumn.cs looks like this:

    Code (CSharp):
    1. using UnityEngine;
    2. using UnityEngine.UIElements;
    3. using System.Collections;
    4. using System.Collections.Generic;
    5.  
    6. public class PickCardColumn : VisualElement
    7. {
    8.     int columns = 5;
    9.     List<VisualElement> columnVEs;
    10.     public new class UxmlFactory : UxmlFactory<PickCardColumn, UxmlTraits> { }
    11.     public PickCardColumn()
    12.     {
    13.         this.RegisterCallback<GeometryChangedEvent>(OnGeometryChange);
    14.     }
    15.     void OnGeometryChange(GeometryChangedEvent evt)
    16.     {
    17.  
    18.         this.Q($"ColumnPicker0").style.display = DisplayStyle.None;
    19.         for (int i = 0; i < columns; i++)
    20.         {
    21.             Debug.Log($"ColumnPicker{i}");
    22.             columnVEs[i] = this.Q($"ColumnPicker{i}");
    23.         }
    24.  
    25.         columnVEs[1].style.display = DisplayStyle.None;
    26.         this.UnregisterCallback<GeometryChangedEvent>(OnGeometryChange);
    27.  
    28.     }
    29. }
    Debug output:
    Code (CSharp):
    1. ColumnPicker0
    2. UnityEngine.Debug:Log (object)
    3. PickCardColumn:OnGeometryChange (UnityEngine.UIElements.GeometryChangedEvent) (at Assets/UI/PickCardColumn.cs:20)
    4. UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
    5.  

    The exception i get is:

    Code (CSharp):
    1. NullReferenceException: Object reference not set to an instance of an object
    2. PickCardColumn.OnGeometryChange (UnityEngine.UIElements.GeometryChangedEvent evt) (at Assets/UI/PickCardColumn.cs:21)
    3. UnityEngine.UIElements.EventCallbackFunctor`1[TEventType].Invoke (UnityEngine.UIElements.EventBase evt) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Events/EventCallback.cs:64)
    4. UnityEngine.UIElements.EventCallbackRegistry.InvokeCallbacks (UnityEngine.UIElements.EventBase evt) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Events/EventCallbackRegistry.cs:341)
    5. UnityEngine.UIElements.CallbackEventHandler.HandleEvent (UnityEngine.UIElements.EventBase evt) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Events/EventHandler.cs:147)
    6. UnityEngine.UIElements.CallbackEventHandler.HandleEventAtTargetPhase (UnityEngine.UIElements.EventBase evt) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Events/EventHandler.cs:125)
    7. UnityEngine.UIElements.EventDispatchUtilities.PropagateEvent (UnityEngine.UIElements.EventBase evt) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Events/IEventDispatchingStrategy.cs:74)
    8. UnityEngine.UIElements.DefaultDispatchingStrategy.DispatchEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Events/DefaultDispatchingStrategy.cs:15)
    9. UnityEngine.UIElements.EventDispatcher.ApplyDispatchingStrategies (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, System.Boolean imguiEventIsInitiallyUsed) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/EventDispatcher.cs:377)
    10. UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/EventDispatcher.cs:340)
    11. UnityEngine.UIElements.EventDispatcher.ProcessEventQueue () (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/EventDispatcher.cs:302)
    12. UnityEngine.UIElements.EventDispatcher.OpenGate () (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/EventDispatcher.cs:266)
    13. UnityEngine.UIElements.EventDispatcherGate.Dispose () (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/EventDispatcher.cs:75)
    14. UnityEngine.UIElements.UIRLayoutUpdater.Update () (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Renderer/UIRLayoutUpdater.cs:56)
    15. UnityEngine.UIElements.VisualTreeUpdater.UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase phase) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/VisualTreeUpdater.cs:155)
    16. UnityEngine.UIElements.Panel.UpdateForRepaint () (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Panel.cs:948)
    17. UnityEngine.UIElements.Panel.Repaint (UnityEngine.Event e) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/Panel.cs:991)
    18. UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/UIElementsUtility.cs:446)
    19. UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& eventHandled) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/UIElementsUtility.cs:209)
    20. UnityEngine.UIElements.UIEventRegistration.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/UIElementsUtility.cs:74)
    21. UnityEngine.UIElements.UIEventRegistration+<>c.<.cctor>b__1_2 (System.Int32 i, System.IntPtr ptr) (at Library/PackageCache/com.unity.ui@1.0.0-preview.14/Core/UIElementsUtility.cs:28)
    22. UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr, System.Boolean& result) (at <6ddf8eac3856492ab1b8cf42618915cc>:0)
     
  2. etienne_unity

    etienne_unity

    Unity Technologies

    Joined:
    Aug 31, 2017
    Posts:
    102
    It looks like your list,
    columnVEs
    is not initialized (null).
     
    LukasXenophanes likes this.
  3. LukasXenophanes

    LukasXenophanes

    Joined:
    Apr 14, 2021
    Posts:
    7
    Thanks for answering, done.