Search Issue Tracker

By Design

By Design in 1.0.X

Votes

0

Found in [Package]

1.0.13

Issue ID

BEHAVB-424

Regression

No

Behavior graph debug indicators showing incorrectly when a Wait node is used in the graph and the behavior is set to repeat

Package: Unity Behavior

-

How to reproduce:
1. Open the attached "IN-126742_TempBehaviorBug.zip" project
2. Open the "SampleScene"
3. Open the "Behavior Graph" asset
4. In the Behavior Graph window change 0 to 1 in “Wait for ... seconds” node
5. In the same window press the Debug button in the top left corner and select the GameObject "AGENT" from the dropdown
6. Enter Play mode
7. Observe the Behavior Graph window

Actual result: The “Wait for ... seconds” node shows a Running state icon in it's top right corner, and the “Log ... to the console” node doesn't show any icon
Expected result: “The Log ... to the console” and “Wait for … seconds” nodes show a checkmark icon in their top right corner for at least a frame

Reproducible with: 1.0.9 (6000.0.64f1), 1.0.13 (6000.0.64f1, 6000.3.1f1, 6000.4.0b1, 6000.5.0a3)
Not reproducible with: 1.0.0 (6000.0.64f1), 1.0.8 (6000.0.64f1)

Reproducible on: Windows 11
Not reproducible on: No other environments tested

Notes:
- The message specified in the “Log … to the console” node is still logged as expected, but the nodes are not showing the success state icon
- Other Wait type nodes (Wait (Frames), Wait (Range) (Seconds)) also cause this issue
- If the Wait node is not used, correct debug icons are shown
- If the “Repeat” node is not used and “On Start” node is not set to repeat, correct debug icons are shown

  1. Resolution Note:

    This behavior is by design. See the first point on the fixed section of the changelog for 1.0.9: https://docs.unity3d.com/Packages/com.unity.behavior%401.0/changelog/CHANGELOG.html#fixed-4

    > Node execution will no longer be deferred to the next frame. This means an entire graph can fully execute in a single frame if none of its nodes take time to execute. Because this can potentially allow users create an infinite loop using a Repeat node or Start with repeat on, we will now abort a graph and throw an exception if it takes longer than a second to run in a single frame. Note: This abort will not happen if the debugger is currently attached to the process.

    You can add a "wait frame" node in between to achieve the desired behavior.

  2. Resolution Note (1.0.X):

    This behavior is by design. See the first point on the fixed section of the changelog for 1.0.9: https://docs.unity3d.com/Packages/com.unity.behavior%401.0/changelog/CHANGELOG.html#fixed-4

    > Node execution will no longer be deferred to the next frame. This means an entire graph can fully execute in a single frame if none of its nodes take time to execute. Because this can potentially allow users create an infinite loop using a Repeat node or Start with repeat on, we will now abort a graph and throw an exception if it takes longer than a second to run in a single frame. Note: This abort will not happen if the debugger is currently attached to the process.

    You can add a "wait frame" node in between to achieve the desired behavior.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.