Search Issue Tracker
Won't Fix
Votes
2
Found in [Package]
1.1.0, 1.3.0
Issue ID
1206536
Regression
No
Changing the Timeline instance's tracks using a script does not apply the change to other Timeline instance's tracks
How to reproduce:
1. Open the project "case_1206536-timeline"
2. Open the scene "SampleScene"
3. Press the Play button
4. Select the GameObject "Timeline1" (or other)
5. Observe the results in the Game and Timeline windows
Expected results: all the GameObjects are playing the same animations
Actual results: each GameObject is playing different animations even though some of the Animation Tracks are muted in the Timeline Asset
Reproducible with: 2017.4.35f1, 2018.4.14f1, 2019.2.16f1(1.1.0), 2019.3.0f4(1.3.0), 2020.1.0a12(1.3.0)
Notes:
1. Changing the Timeline instance's tracks (e.g. muting an Animation Track) using the Editor applies the change to other Timeline instance's tracks
2. When any Cube is selected in the Game mode it begins to play the unmuted Animation Tracks in the Timeline asset like supposed to in 2019.2 and above (you can see that in the attached video)
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
- Clearable "RenderingCommandBuffer" errors are thrown in the Console when creating project using Universal 3D Template
- [Quest] Game View displays the last frame when Switching Screen Mirroring off after 1 second delay
- Tooltips sometimes display additional black/grey/clear sections which can cut off text
- OnPostprocessPrefab modifies the source Prefab when fields are edited outside Prefab Mode
- "Articulation Body" fails to move the GameObject when the "XDrive's" "Target" value is set in animation
Resolution Note:
I resolved this bug as Won't fix because fixing this problem means that the data model and API would need to be completely overhauled.
> The problem of using the same Timeline it seems when checking the Timeline Window it overwrites the other instances of the same Timeline.
When playing a timeline, a PlayableGraph is built from the data in the Timeline Asset. Once the graph is built, it is not updated unless RebuildGraph() is called on the PlayableDirector.
In your code, you first mute tracks on the first timeline. Then, you mute some other tracks in the same asset for the second timeline. The first timeline instance is now out of sync with its asset but its PlayableGraph is not rebuilt. This is why, in a player, all three timelines show different animations.
The Timeline window sometimes automatically calls RebuildGraph when the data has changed, like when you mute a track, add/remove a track or when it detects that the asset and PlayableGraph are out of sync. This is why, when you open a timeline in the Timeline window, that you see the animation changing. The PlayableGraph is rebuilt because the window enforces a sync between the asset and the PlayableGraph.
This is not something we can fix without changing the API and how the Timeline window operates. We would need a runtime API to mute a track in the PlayableGraph itself. We would also need to change the update behaviour of the Timeline window.
I tried to find a workaround: could you use one timeline per ''group''? During setup, you could randomly assign a timeline to a gameobject, instead of muting tracks.