Search Unity

Bug Scene variables not working for state custom events

Discussion in 'Visual Scripting' started by epsilon840, Nov 9, 2022.

  1. epsilon840

    epsilon840

    Joined:
    Aug 30, 2022
    Posts:
    3
    Not sure is it bug or no
    Reproduce steps:
    1. Create state graph (on gameObject marked as 'DontDestroyOnLoad')
    2. Create scene variable (gameObject from scene in my case)
    3. Create custom event (e.g. for "On Enter State" - it's working)
    4. Try to get scene variable from custom event flow
    Duplicate "VisualScripting SceneVariables" with zero variables will be created at runtime

    Visual scripting version - 1.7.8 - May 10, 2022
    Unity version - 2021.3.11f1

    upload_2022-11-9_22-10-59.png


    Code (CSharp):
    1. InvalidOperationException: Variable not found: 'VariableName'.
    2. Unity.VisualScripting.VariableDeclarations.Get (System.String variable) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Core/Variables/VariableDeclarations.cs:65)
    3. Unity.VisualScripting.GetVariable.Get (Unity.VisualScripting.Flow flow) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Framework/Variables/GetVariable.cs:137)
    4. Unity.VisualScripting.Unit+<>c__DisplayClass86_0`1[T].<ValueOutput>b__0 (Unity.VisualScripting.Flow recursion) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Unit.cs:353)
    5. Unity.VisualScripting.Flow.GetValueDelegate (Unity.VisualScripting.ValueOutput output) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Flow.cs:650)
    6. Unity.VisualScripting.Flow.GetValue (Unity.VisualScripting.ValueOutput output) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Flow.cs:591)
    7. Unity.VisualScripting.Flow.GetValue (Unity.VisualScripting.ValueInput input) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Flow.cs:535)
    8. Unity.VisualScripting.Flow.GetValue (Unity.VisualScripting.ValueInput input, System.Type type) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Flow.cs:603)
    9. Unity.VisualScripting.InvokeMember.GetAndChainTarget (Unity.VisualScripting.Flow flow) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Framework/Codebase/InvokeMember.cs:236)
    10. Unity.VisualScripting.InvokeMember.Enter (Unity.VisualScripting.Flow flow) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Framework/Codebase/InvokeMember.cs:258)
    11. Unity.VisualScripting.Flow.InvokeDelegate (Unity.VisualScripting.ControlInput input) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Flow.cs:456)
    12. Unity.VisualScripting.Flow.Invoke (Unity.VisualScripting.ControlOutput output) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Flow.cs:347)
    13. Unity.VisualScripting.Flow.Run (Unity.VisualScripting.ControlOutput port) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Flow.cs:240)
    14. Unity.VisualScripting.EventUnit`1[TArgs].Run (Unity.VisualScripting.Flow flow) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Framework/Events/EventUnit.cs:182)
    15. Unity.VisualScripting.EventUnit`1[TArgs].Trigger (Unity.VisualScripting.GraphReference reference, TArgs args) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Framework/Events/EventUnit.cs:154)
    16. Unity.VisualScripting.EventUnit`1+<>c__DisplayClass14_0[TArgs].<StartListening>b__0 (TArgs args) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Flow/Framework/Events/EventUnit.cs:67)
    17. Unity.VisualScripting.EventBus.Trigger[TArgs] (Unity.VisualScripting.EventHook hook, TArgs args) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Core/Events/EventBus.cs:71)
    18. Unity.VisualScripting.EventBus.Trigger (Unity.VisualScripting.EventHook hook) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Core/Events/EventBus.cs:85)
    19. Unity.VisualScripting.EventBus.Trigger (System.String name, UnityEngine.GameObject target) (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Core/Events/EventBus.cs:90)
    20. Unity.VisualScripting.UnityOnButtonClickMessageListener.<Start>b__0_0 () (at Library/PackageCache/com.unity.visualscripting@1.7.8/Runtime/VisualScripting.Core/Events/MessageListeners/UIEventsListeners/UnityOnButtonClickMessageListener.cs:11)
    21. UnityEngine.Events.InvokableCall.Invoke () (at <86acb61e0d2b4b36bc20af11093be9a5>:0)
    22. UnityEngine.Events.UnityEvent.Invoke () (at <86acb61e0d2b4b36bc20af11093be9a5>:0)
    23. UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
    24. UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
    25. UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
    26. UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
    27. UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)
    28.  
    29.  
     
    Last edited: Nov 9, 2022
  2. epsilon840

    epsilon840

    Joined:
    Aug 30, 2022
    Posts:
    3
    I figured out scene variables not working for state machine component on gameObjects that was invoked
    DontDestroyOnLoad

    Main reason is scene param for Unity.VisualScripting.SceneSingleton that called under the hood is 'DontDestroyOnLoad' scene, not the actual active scene. This is why a duplicate VisualScripting SceneVariables object is created.