Search Issue Tracker
By Design
By Design in 2023.3.X
Votes
0
Found in
2021.3.30f1
2022.3.10f1
2023.1.15f1
2023.2.0b12
2023.3.0a7
Issue ID
UUM-52903
Regression
No
Time of the “AnimationClipPlayable” will not automatically advance to the next frame when setting the time of the “AnimationClipPlayable”
How to reproduce:
1. Open the user’s attached “Repro_latest.zip” project
2. Open “Test” Scene
3. Enter Play Mode
4. In the Hierarchy, select “SKM_Manny” GameObject
5. In the Inspector window, press the “Sync Once” button
6. Observe the Console window
Expected result: The results of GetTime in two consecutive PrepareFrame outputs are not equal
Actual result: The results of GetTime in two consecutive PrepareFrame outputs are equal
Reproducible with: 2021.3.30f1, 2022.3.10f1, 2023.1.15f1, 2023.2.0b12, 2023.3.0a7
Reproduced on: macOS 13.5.2 (Intel)
Not reproducible on: No other environment tested
Note: According to the rules of Playables, at this point, the `PrepareFrame` and `ProcessFrame` methods of the AnimationClipPlayable should not have been executed yet, so the impact caused by `SetTime` should theoretically be consumed in this frame and should not carry over to the next frame (user’s info)
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Shader Graph Node information is briefly displayed in Graph Inspector when clicking on Category in the Blackboard
- Module installation fails with "Download failed: Validation Failed" errors when using beta.2 Hub version
- JsonConvert conversion fails trying to call GetCallbackMethodsForType when [OnDeserialized] is used in a class
- Shader Graph Category dropdown cannot be expanded/collapsed when clicking on the text
- Different text alignment in the column header in Entities "System" window
Resolution Note:
The reason the results of GetTime in two consecutive PrepareFrame outputs is equal is because calling GetTime within the PrepareFrame function will return the time at the start of the current frame before the time has advanced in the Playable. Calling SetTime will override the current frame to the given time value, and the time will not be advanced any further in that frame. During the next frame, the time of the Playable will still advance correctly immediately after the PrepareFrame function.
Frame 1
1. SetTime in PrepareFrame -> overrides current time with the value set
2. GetTime in PrepareFrame -> returns the time that was set
3. Time is not advanced because the time was overridden this frame
Frame 2
1. GetTime in PrepareFrame -> returns time from last frame since time has not yet advanced
2. Time is advanced by the delta time
Resolution Note (2023.3.X):
The reason the results of GetTime in two consecutive PrepareFrame outputs is equal is because calling GetTime within the PrepareFrame function will return the time at the start of the current frame before the time has advanced in the Playable. Calling SetTime will override the current frame to the given time value, and the time will not be advanced any further in that frame. During the next frame, the time of the Playable will still advance correctly immediately after the PrepareFrame function.
Frame 1
1. SetTime in PrepareFrame -> overrides current time with the value set
2. GetTime in PrepareFrame -> returns the time that was set
3. Time is not advanced because the time was overridden this frame
Frame 2
1. GetTime in PrepareFrame -> returns time from last frame since time has not yet advanced
2. Time is advanced by the delta time