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
- Build fails when building a project containing an 18+ dimension array with IL2CPP
- [Android][Sentis] Human poses are not detected when using the BlazePose model
- Sprite Editor Outline Tool Overlay is not displayed when no Sprite is selected
- “No method with RuntimeInitializeOnLoadMethod attribute” warning from ReadmeEditor.cs is thrown after installing Project Auditor Rules
- Projection matrix is altered when using RasterCommandBuffer.ClearRenderTarget on DX12 and Metal
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