As a long time Unity user I’m well accustomed to things breaking when upgrading a project to a new editor version, but the latest situation is nothing short of absurd–so much so that all I can really do is share it here.
Our project is currently on 2019.2.17 and is ready to upgrade for various reasons. Reading the blog comments on 2019.3’s release assured me it was to be avoided, so I’ve been equally skeptical of 2019.4 (LTS). With our project far along in production though, as per the official word, we decided it should be safer to stick with the LTS for now than go for 2020. Hopefully it’s been long enough to have stabilized somewhat.
Instead, we find the upgrade broke our character selector, the console spamming messages about the Animator and “PlayableGraph being evaluated with no outputs. Playables will not be updated”. We don’t use Playables, so what does this even mean?
Debugging and web searching later, I finally come across this issue: Unity Issue Tracker - Clip Count is not updated correctly when Animator.runtimeAnimatorController is changed twice on the same frame
Turns out, this game-breaking bug is already fixed in 2020.2, “In Review” for 2020.1, and “Planned” for the “stable” 2019.4.
This issue is already about 2 months old, and it’s only “planned” for 2019 LTS? I’ve seen numerous other bugs like this: fixed for the latest “unstable” beta version with no word on the current “stable” releases, with people asking “When? It’s been months.” and getting no response.
Also, this issue isn’t even covered on 2019.4.5’s “Known Issues” list, which doesn’t inspire much confidence.
Another one affecting our game ( etc/mono/config and path resolution for dylib in macOS ) has no issue tracker link, but the last word from Unity was that it was fixed in a 2020.2 Alpha and “should soon make it to 2020.1 and 2019.3”. Who knows if it did, because the next person to ask for an update was ignored.
So as paying Unity users, our only option for getting our game-breaking bug fixed is to upgrade our far-into-production project to the latest alpha version.
Oh wait, we can “log in to vote on this issue”. I’m sure that will make a huge difference when the issue currently has 0 votes.
For icing on the cake, the code responsible for this bug is a hacky solution I had to implement for more strange Unity behavior:
anim.runtimeAnimatorController = null;
anim.runtimeAnimatorController = characters[id];
anim.SetTrigger(preview);
We ended up having to set the Animator controller to null first because there was a strange bug where rapidly changing between controllers would double-trigger on certain state machines, and no combination of stop playback/reset trigger would fix it.
Ultimately I don’t expect this topic to go anywhere, but as I said, sharing the absurdity of the situation is really all I can do. We’ll continue with 2019.2 for now, but at the rate Unity goes, we may not be able to upgrade our project until 2020.2 is ready. Or, isn’t ready, because maybe alphas are more stable than the ready releases?