Search Unity

  1. Are you interested in providing feedback directly to Unity teams? Sign up to become a member of Unity Pulse, our new product feedback and research community.
    Dismiss Notice

Animator locking animated value even when current state has no curves/keys for that value

Discussion in 'Animation' started by stregillus, Nov 10, 2016.

  1. benthroop

    benthroop

    Joined:
    Jan 5, 2007
    Posts:
    207
    This behavior caused me to waste almost an entire day. In our case, we had a group of animations in a single controller that set active/inactive on some UI elements. When we would get to an animation state that didn't include a prior UI element, it would get set to the UI Element's last active value, even though it wasn't in the track list. We noticed that this was happening when we tried to toggle active/inactive in the inspector but something was locking the value. Turns out it was Animator.

    The expected behavior here is that only the tracks that are in the active animation should be affected.

    Our solution is to manage active state in code and remove all tracks relating to Active from the entire animation controller.
     
  2. MildlyAnnoyed

    MildlyAnnoyed

    Joined:
    Jan 12, 2017
    Posts:
    7
    This problem could be solved though by introducing a root object for your heart that you don't animate. E.g.:
    HeartRoot
    |---Actual heart (Put Animator here)
    |---|---Graphics

    By animating locally in your hierarchy rather than the root object, you should be able to retain your offset position since that position is specified on the Root object. The root object should just be an empty game object.
     
  3. G-Reusch

    G-Reusch

    Joined:
    Sep 28, 2013
    Posts:
    5
    I also experienced issues with an animator applying defaults and overriding my code. I basically have an idle animation where the character bobs slightly, but the mouth sprite needed to change for the talking animation. The enabled property of the SpriteRenderers was getting set by the animations even though I wasn't animating them. I tried to set the enabled property in the animations but state transitions in the animator put an end to that real quick.

    I ultimately had to set some bools in my speaking coroutine and have the proper mouth sprite enable/disable in LateUpdate every frame the character is talking. There's no performance hit that I can notice, but if unchecking "Write Defaults" worked as intended it would not have been an issue.
     
  4. masky007

    masky007

    Joined:
    Mar 21, 2019
    Posts:
    2
    I just spent a whole day debugging why setting a simple transform.rotation wouldn't work in code.. after i figured that the animator is causing this lockdown o_O ... i just set my rotation to be set (before i set my object active) But in the near future i will want to use idle animation and not disabling the the object at all - what do i do then?

    Is Unity having plans to improve on this behaviour? It really is just headaches as it is behaving at the moment!
     
    ObliivionN likes this.
  5. MadboyJames

    MadboyJames

    Joined:
    Oct 28, 2017
    Posts:
    185
    Crazy it's been 2 years since the dawn of this thread. I have a question which is nagging me: Are we using animations correctly? I commonly set up the graphics for my objects in a separate child from the main collision/ AI parent object. This seems to be best practice, as far as I've seen. But seeing as unchecking the "write defaults" checkbox does not cease the writing of values as defaults (Iron clad defaults, as we've found, with the exception of LateUpdate), are we supposed to animate changes in the transform in some other fashion than the "add property" tab in the animation editor window?

    The issue I am facing is that I have an enemy death animation, where the enemy (which is part of a pool) shrinks and spins up into the sky (kinda like what happens when you cause an extinction event in SPORE). The child object gets pushed from a y position of 0, to a y position of 3. Then I have an event at the end of the animation which disables the parent root object, returning the parent and all children to the enemy object pool. When that object is next spawned, the parent transform is fine, but the child (with the graphics) is stuck at a y position of 3. Additionally, before the animation has been played, that child is stuck at a y position of 0 (which is technically unnoticeable because it's grounded, but that's where the animation starts, so... still an issue, even if not evident).

    If anyone has a solution, a better practice, or an update on the status of a Unity response the animation property lockdown, I would greatly appreciate it. :)
     
    Last edited: May 15, 2019
  6. Kybernetik

    Kybernetik

    Joined:
    Jan 3, 2013
    Posts:
    1,775
    Since my last post I've actually tested the behaviour of the Simple Animation component and found that the behaviour described under the headding "SimpleAnimation doesn’t support only writing the values of the current clip by default" doesn't actually work as they say. After adding a property to expose keepStoppedPlayablesConnected publicly to make it actually usable, I found that it does indeed disconnect stopped playables from the graph, yet that still doesn't prevent them from writing the values of all their curves every frame (i.e. locking the animated values). I submitted a bug report (case 1143585) and they were able to reproduce it, but I haven't heard anything else since.

    @MadboyJames Try out my Animancer plugin (link in my signature). The issue you're describing should not be a problem when you use it.

    To be honest, that only makes this whole problem more confusing because Animancer doesn't actually do anything to fix it, the problem simply doesn't happen when using the Playables API. And since Mecanim uses the Playables API internally, that means the Animator Controller must be intentionally doing something extra which screws it up ...
     
    wpetillo and ModLunar like this.
  7. MadboyJames

    MadboyJames

    Joined:
    Oct 28, 2017
    Posts:
    185
    Interesting. That could very well work. My dilemma is I like the Animator GUI. It has decent organizational capacity for any object with, say, less than 10 animations (arguably only 5 or less). Good for prototyping. I'll give Animancer a go.

    Update: Animancer seems pretty solid (using Lite), but the issue I'm running into is being able to edit animations without adding in a AnimatorController. Do I just need to have the AnimatorController attached while editing, then delete the component once I'm done?

    Update 2: Strangely enough, The animations are still locking my values, even with Animancer.
     
    Last edited: May 16, 2019
  8. Kybernetik

    Kybernetik

    Joined:
    Jan 3, 2013
    Posts:
    1,775
    I meant that Animancer should fix the issue of animated values not resetting when you reuse a pooled object, not the issue with locking animated values while active. I haven't found a solution for that one.

    Unfortunately you do currently have to assign an AnimatorController to edit animations. But in Unity 2018.3 they introduced the ability for custom components to provide AnimationClips to the Animation window so I've added support for that in the v3.0 update I'm currently working on. I'm planning on releasing a beta once I finish the documentation in a couple of days so people can try it out and give me feedback while I make a trailer video and improve the store page. If it's a big part of your workflow at the moment I can put together a package of the Lite version for you in the morning.

    It would probably be best to send me a private message or post over here if you have any other questions about Animancer so we don't derail this thread.

    Edit: Animancer v3.0 is up on the store now.
     
    Last edited: Nov 14, 2019
  9. dormouse

    dormouse

    Joined:
    Mar 1, 2011
    Posts:
    72
    Interesting problem! I had the same headache with Mechanim/Animation state with UI. For example,
    I would like to fadeout a button (via script) then flash it. After creating an animationclip that animates alpha value, the whole UI element has been locked.
    The fadeout effect via script has no effect since the animation state stays at 'idle' state that locks everything.

    The only solution i found:
    i have to manually disable the 'animator' component on my UI element.
    When i want to play the 'flash' effect, i have enabled=true.

    To me it is very unintuitive design. Or it is better to mention this some where...overwise, we will waste thousand hours on this topic.

    thanks
     
    ModLunar likes this.
  10. killakiwi

    killakiwi

    Joined:
    Sep 5, 2013
    Posts:
    21
    Agree with everyone else that this is really intuitive.

    I have luckily found a solution that satisfies my needs.
    My goal was to have an idle animation that bobs the hips up and down, but leaves the feet to use IK so that they may fall naturally on stairs etc.
    The AnimatorOverrideController solution didn't really work for me but I managed to get it working with Playables.
    Basically you remove everything from your AnimationController as playables doesn't need it. Then you can just call this:
    Code (CSharp):
    1.  if (!animationClipPlayable.IsNull ())
    2.             animationClipPlayable.Destroy ();
    3.         animationClipPlayable = AnimationPlayableUtilities.PlayClip (GetComponentInChildren<Animator> (), randomClip, out graph);
    The Destroy is to stop the previous animation playing if there was one.
     
  11. Karsten

    Karsten

    Joined:
    Apr 8, 2012
    Posts:
    137
    wow this is a bug sold as a feature : 9 you have an animation on your character that moves the player transform just becaus eyou want to let it "slide" somewhere into bed for example, and then your pos and rotation is locked forever , except you turn off the Animator , lol jeeeez, even if you let the animcontroller run on a complete empty animation your pos and rot is still locked, my god....

    Edit: To be fair, Timeline looks interesting for such "cutscenes" , but it also looks like a hack , adding an empty Animator

    Update: look my message below how I solved this for my cases, maybe you can use the info to solve your case too!
     
    Last edited: Nov 9, 2019
    asimdeyaf likes this.
  12. lorux

    lorux

    Joined:
    Feb 9, 2017
    Posts:
    31
    Hello, i know this has been an issue for long time. One approach i know it works is to save all keyframes shared between clips in the same animator. Another way that sometimes works is to restore hierarchy transform original state before deactivating the object that contains the animator.


    using System.Collections.Generic;
    using System.Linq;
    using UnityEngine;

    public static class TransformExtensions
    {
    public static void RestoreHierarchyTransforms(this Transform transform, Transform source)
    {
    transform.localPosition = source.localPosition;
    transform.localRotation = source.localRotation;
    transform.localScale = source.localScale;

    var childs = transform.OfType<RectTransform>().Join(source.OfType<RectTransform>(),
    t => t.name,
    t => t.name,
    (dest, src) => new KeyValuePair<RectTransform, RectTransform>(dest, src));

    foreach (var pair in childs) pair.Key.RestoreHierarchyTransforms(pair.Value);
    }

    public static void RestoreHierarchyTransforms(this RectTransform transform, RectTransform source)
    {
    transform.anchorMin = source.anchorMin;
    transform.anchorMax = source.anchorMax;
    transform.anchoredPosition = source.anchoredPosition;
    transform.sizeDelta = source.sizeDelta;
    transform.localScale = source.localScale;

    var childs = transform.OfType<RectTransform>().Join(source.OfType<RectTransform>(),
    t => t.name,
    t => t.name,
    (dest, src) => new KeyValuePair<RectTransform, RectTransform>(dest, src));

    foreach (var pair in childs) pair.Key.RestoreHierarchyTransforms(pair.Value);
    }
    }


    This is how i use it:


    ((RectTransform) someUiObjectThatContainsAnimator.transform)
    .RestoreHierarchyTransforms((RectTransform) GetPrefab().transform);

    someUiObjectThatContainsAnimator.gameObject.SetActive(false);


    Where the function GetPrefab() returns the object that has the hierarchy transform original state and someUiObjectThatContainsAnimator is an instance of that prefab that changed its state due current animation clip.
    The downside of this is that if you have an object that contains more than 1 child that has the same name, it may not restore it. Also if instance has changed its hierarchy state compared to the source transform (or prefab) it may not restore it.
     
    Last edited: Oct 4, 2019
    ModLunar likes this.
  13. vitorfgd

    vitorfgd

    Joined:
    Nov 4, 2014
    Posts:
    16
    It's been 3 years and unity is still pretending this is ok. This is risible.
     
    ModLunar likes this.
  14. unity_I6490ybpCNI3vg

    unity_I6490ybpCNI3vg

    Joined:
    May 30, 2018
    Posts:
    1
    Just leave +1 here.
     
  15. Karsten

    Karsten

    Joined:
    Apr 8, 2012
    Posts:
    137
    I found a way to circumvent this problem in many/most cases,
    try to do your animations (trigger animator params and code of your animation) in Unitys LateUpdate() method
    this worked in my case, seams like LateUpdate is really called even after transforms have moved "internally"
    however , try it out and please post here if it worked for you, i'm interested how it has gone in your specific case.
     
  16. densy07

    densy07

    Joined:
    Nov 27, 2013
    Posts:
    30
    Why do this, Unity...
     
    drSound likes this.
  17. WookieWookie

    WookieWookie

    Joined:
    Mar 10, 2014
    Posts:
    21
    This does not work.
     
  18. perholmes

    perholmes

    Joined:
    Dec 29, 2017
    Posts:
    224
    What the holy heck is the purpose of the Mecanim system and state behaviors in particular if you're not allowed to touch anything? I've spent all day on this now. There seems to be no way to mix Mecanim stuff with anything procedural unless you're OK with applying your procedural stuff on *top* of everything else, where ideally, IK is the last thing to go on top of everything else.

    It sounds like Unity feels that if you want to do anything but Lego Duplo with Mecanim, you have to write your own from scratch. I've now finally started looking at which IK solutions I can bring in so that I can get to layer stuff like a normal person.

    This design flaw in Unity massively undercuts the whole purpose of using a game engine in the first place. I'm now looking at using Unity almost like a library, but doing almost all the animation myself in code. This is making me second-guess choosing Unity in the first place, now that I have to write major parts of the animation from scratch, with zero help from the engine.

    This is massively frustrating you guys. The whole value proposition falls part when you need crazy to-hell-and-back hacks to do basic things.
     
    vitorfgd and ModLunar like this.
  19. vitorfgd

    vitorfgd

    Joined:
    Nov 4, 2014
    Posts:
    16
    I also don't appreciate how the animator is a black box that developers can't access. If you'd like to do something on animation end you have only two options, using an animation event that often doesn't work because it uses a simple SendMessage or a StateMachineBehaviour that doesn't implement even the simplest of things like
    OnStateFinished
    . You have to create an empty state that forwards the current state and attach a StateMachineBehaviour that will, SOMEHOW, let your code know that the previous state has finished.

    It's extremely frustrating.
     
    ModLunar likes this.
  20. Kybernetik

    Kybernetik

    Joined:
    Jan 3, 2013
    Posts:
    1,775
    Yeah, I just finished implementing my own event system in Animancer which took way more effort than I would have liked because I was trying to replicate the behaviour of a black box so every time I ran into something unexpected I had to search around the internet and test it in a few different Unity versions to see if it was a bug or not.

    It was definitely worth it though, I'm so glad I won't have to use Unity's animation events any more.
     
  21. SorneBachse

    SorneBachse

    Joined:
    Dec 27, 2012
    Posts:
    56
    I can't believe this is "expected behaviour". And I can't believe this hasn't been adressed for so long either.

    I have a boss, which has a "Reset" animation, which takes care of resetting all the gameObjects active state, setting up the proper sprites for phases etc.
    And even when this animation isn't even being played, ever, it still locks my gameObjects active state meaning I can't transition between boss phases.

    Come on Unity, fix this please.
     
  22. johnq1216

    johnq1216

    Joined:
    Dec 6, 2013
    Posts:
    2
    I'm an idiot for I cannot understand over half the posts on this thread. But here's what I went through. Hopefully some of it helps, or someone can help me understand what's going on.

    I have a similar problem. I wanted the player character to flash red when taking hits. And it's not working. The player character is animating taking the hit from enemies, but no red flash. I wanted this red flash to come from scripts, not the Animation window.

    After 2 hours, I found the culprit. Of the dozens of animation clips, only one of them changes color. By deleting this clip, the player character can finally flash red when taking hits. And that comes from the script, not the Animation Window. For some reason, this animation clip is locking down the color changes from scripts even if the clip isn't being played.
     
  23. haza246

    haza246

    Joined:
    Jun 13, 2012
    Posts:
    1
    i just ran into this problem, i can't change my players local scale by script with the animation just existing in the animator and never being played. Removing the animation from the animator fixes the problem but i want to use that animation. Why are values being locked from animations that are never even being played, pls only lock values that are currently being animated, this is a huge waste of time
     
    ObiOneStenobi likes this.
  24. DoctorShinobi

    DoctorShinobi

    Joined:
    Oct 5, 2012
    Posts:
    176
    Just hit this behaviour in 2020 and I'm disappointed to see there's no non hacky way to bypass it. I wish this issue would actually get addressed by the Unity team but that doesn't seem likely.

    I am making a 2D platformer character and I change the sprite renderer's flipX value according to the player's input. I have that one animation that modifies flipX and due to this behaviour I can't programmatically modify flipX anymore.

    I'm going to try this workaround: Create an animator asset per animation, and instead of switching animations I would switch the animator asset.
     
  25. Kybernetik

    Kybernetik

    Joined:
    Jan 3, 2013
    Posts:
    1,775
    That would work, but would be extremely inefficient and inconvenient. I highly recommend you check out Animancer Lite (link in my signature) which lets you just play Animation Clips directly and is free because you probably don't need any of the pro-only features for simple sprite animations.
     
  26. DoctorShinobi

    DoctorShinobi

    Joined:
    Oct 5, 2012
    Posts:
    176
    Thanks.
    Wouldn't just using the legacy animation component be enough in my case?
     
  27. Kybernetik

    Kybernetik

    Joined:
    Jan 3, 2013
    Posts:
    1,775
    I would still recommend Animancer because it lets you avoid using Magic Strings and it has various other useful features like End Events and Directional Animation Sets, but otherwise Legacy would certainly get the job done far better than having a separate Animator Controller for every animation.
     
    DoctorShinobi likes this.
  28. Nikovich

    Nikovich

    Joined:
    Jul 10, 2010
    Posts:
    69
    There is no way this is a "Some people like it, some people hate it" scenario. This is a "Some people hate it, those that don't just don't actually know about it" scenario.

    If you want the previously animated components to be frozen on another animation, you apply those values to those components in the other animation. THAT should be the expected behavior.


    LateUpdate does not help me here. My scrollbar now snaps back to the 0 position every time the user stops interacting with it. All I wanted was an easy way to do some Eased animation on it as a CallToAction and now I have to implement it with complicated hard-coded calculations, because Mechanim says "No, don't touch that."
     
  29. akasabutski-compiledworld

    akasabutski-compiledworld

    Joined:
    Nov 7, 2018
    Posts:
    9
    Encountered this problem today (2019.3.4). Luckily found this thread. I realized quite a while ago to avoid using animator as much as possible but still using it for the simplest cases possible. And as usual, as soon as I try to take a step "left" - everything went down with the speed of light.
     
  30. waltran

    waltran

    Joined:
    Feb 23, 2017
    Posts:
    33
    thanks for stealing an hour from me too. i'm ok with it if it i expected behaviour but then it should e explicitly shown so we don't waste hundreds of dev hours from the community huh!
     
    normus28 likes this.
  31. Behaviour

    Behaviour

    Joined:
    Oct 4, 2015
    Posts:
    9
    I'm reviving this thread because I just wasted the last two hours trying to figure out what the hell was locking/overriding my blendshape values only to find out it was the Animator even though I've never told it to do that (either via the animation itself or via a Unity setting) nor was I expecting the Animator to be responsible for it - so to me this is also really unintuitive behaviour and should be made into an option that you can toggle since Write defaults does nothing. This setting should be OFF by default, that's how unintuitive this feels.
     
    waltran and ModLunar like this.
  32. ModLunar

    ModLunar

    Joined:
    Oct 16, 2016
    Posts:
    287
    @Behaviour That's an awesome idea, having this off by default, and using a simple boolean that controlled this behaviour would be really helpful!!

    I'd even benefit from a "Write Defaults" boolean on the whole Animator component itself, so I could easily deactivate that behaviour for the entire state machine on a particular GameObject. Seriously hope the Unity team considers this if possible :)
     
    Behaviour likes this.
  33. wpetillo

    wpetillo

    Joined:
    May 23, 2017
    Posts:
    19
    I ran into this bug when working with sprite animations for a structure that would play an animation on destroy, but also needed to change those same sprites through code. Unticking WriteDefaults unfortunately has no effect. Wrote up a quick script to handle this, and also playing a random animation without animation parameters, and also selecting a clip from an array by index, clip, or name. Just attach to the same object as your animator and call your animations through this script rather than through the animator directly. This won't work for cases that need to continuously play an Idle animation because it automatically enables/disables the animator. It could easily be extended to handle calling events on complete (or at some intermediate point) by adding to the Coroutine. I believe it could be extended to handle transitions, but that is not implemented because I did not not need that functionality:

    Code (CSharp):
    1. using System.Collections;
    2. using UnityEngine;
    3.  
    4. public class AnimatorInterface : MonoBehaviour
    5. {
    6.     Animator animator;
    7.     [SerializeField] AnimationClip[] animations;
    8.  
    9.     void Awake ()
    10.     {
    11.         animator = GetComponent<Animator>();
    12.     }
    13.  
    14.     public void PlayRandom()
    15.     {
    16.         var index = Random.Range(0, animations.Length);
    17.         Play(index);
    18.     }
    19.    
    20.     public void Play(int index)
    21.     {
    22.         Play(animations[index]);
    23.     }
    24.    
    25.     public void Play(AnimationClip clip)
    26.     {
    27.         Play(clip.name);
    28.     }
    29.    
    30.     public void Play(string animation)
    31.     {
    32.         StartCoroutine(PlayRoutine(animation));
    33.     }
    34.    
    35.     IEnumerator PlayRoutine(string animation)
    36.     {
    37.         animator.enabled = true;
    38.         animator.Play(animation);
    39.         yield return null;
    40.        
    41.         var info = animator.GetCurrentAnimatorStateInfo(0);
    42.         yield return new WaitForSeconds(info.length);
    43.         animator.enabled = false;
    44.     }
    45. }
    For more complex animation use-cases, I'd +1 the recommendation for Animancer.
     
  34. Mestroyer12

    Mestroyer12

    Joined:
    Aug 7, 2018
    Posts:
    2
    Just disable animation/animator before trying to transform.
     
  35. hermitcat64

    hermitcat64

    Joined:
    Apr 18, 2020
    Posts:
    16
  36. bourriquet

    bourriquet

    Joined:
    Jul 17, 2012
    Posts:
    165
    Even LateUpdate doesn't work.
     
    Last edited: Jun 10, 2020
  37. HIroLionBld

    HIroLionBld

    Joined:
    Sep 20, 2019
    Posts:
    9
    Because of this I have to re-create every body parts of character everytime I mistakenly added a keyframe on the parts.
    This should be filed as a bug, it's serious issue because there is no way to fix the data once its in, except creating a new spriterenderer to move.
    How stupid is this to leave this bug for years without recognizing it as a bug.
    this is honestly bad.... there has to be a way to fix it, but I can't find it. LateUpdate() doesn't work too.
    It happens when I have animation on a spriterenderer which also have separate script that changes transform of the said spriterenderer object. it just locks onto the position and can't ever be moved except in preview mode, but i need it movable in runtime, this is A DAMN BUG!
     
  38. Joshdbb

    Joshdbb

    Joined:
    Oct 28, 2014
    Posts:
    47
  39. alfred98

    alfred98

    Joined:
    Aug 14, 2016
    Posts:
    2
    Before playing the animation I set 'gameObject.GetComponent<Animator>().enabled = true;'

    And at game start I let animator be disabled.

    So I can turn my objects rotation the way I want until I want to trigger the animation.

    Solved my issue.
     
  40. alfred98

    alfred98

    Joined:
    Aug 14, 2016
    Posts:
    2
    Before playing the animation I set 'gameObject.GetComponent<Animator>().enabled = true;'

    And at game start I let animator be disabled.

    So I can turn my objects rotation the way I want until I want to trigger the animation.

    Solved my issue.


    I guess you would like to disable the animator once the animation is done to get this to work using multiple animations on different occasions.
     
  41. XianGrim

    XianGrim

    Joined:
    Jan 14, 2014
    Posts:
    5
    Not sure if this will help anyone, but I found that the values/variables I wanted to change had inadvertantly been inserted into animation clips inside my animator. I wasn't even using some of them yet and the clips still had the values in the dope sheet. Removing those properties allowed me to change them via script again.

    Again, no idea if its this same issue but this worked in my case. Hope it helps someone
     
  42. Mesmeric_Development

    Mesmeric_Development

    Joined:
    Nov 30, 2020
    Posts:
    1
    This took me a few days:
    void LateUpdate()
    { MouseY = Input.GetAxis("Mouse Y");
    foreach(Transform tf in spine)
    {
    tf.Rotate(transform.right, MouseY * sens / spine.Length);
    }
    }
    At least it didn't take 6+ years to fix my issue.
     
  43. ThundThund

    ThundThund

    Joined:
    Feb 7, 2017
    Posts:
    246
    Same issue here. My case, put simple:
    1-I change the position of a game object using animation keyframes.
    2-I want to enable / disable that object using a script, while the animation occurs.

    Step 2 is impossible, it is always either enabled or disabled until the animation finishes, no matters what is executed in the script. Only added the position properties to the animation timeline.
     
  44. ThundThund

    ThundThund

    Joined:
    Feb 7, 2017
    Posts:
    246
    I reply to myself: The problem was that 1 of all the animations in my animator state machine was referencing the Enabled property. Even if the rest of animations were not, that was causing the Enabled property to be always locked.
     
  45. killmark5550

    killmark5550

    Joined:
    Aug 30, 2020
    Posts:
    3
    Why is this still no fixed? Wtf
     
  46. StuartWebster

    StuartWebster

    Joined:
    Nov 27, 2014
    Posts:
    1
    +1. Ran face-first into this today.
     
    ModLunar likes this.
  47. Aokkii

    Aokkii

    Joined:
    Nov 3, 2013
    Posts:
    108
  48. Eostream

    Eostream

    Joined:
    Dec 24, 2015
    Posts:
    11
    Fix this behavior please. Used unity for years and I was never aware of this issue, never liked it.
    Assuming there are people liking it, then do a poll, I'd be really surprised if more people liked this behavior than the opposite.
     
    ModLunar likes this.
  49. GuyGardner

    GuyGardner

    Joined:
    Nov 17, 2017
    Posts:
    1
    Congratulations Unity, since 2016 this problem still persists.
    And as others have said, no, lateupdate doesn't work.
     
  50. angelonit

    angelonit

    Joined:
    Mar 5, 2013
    Posts:
    14
    I fixed my case with this, good luck all:
    Code (CSharp):
    1. animator.keepAnimatorControllerStateOnDisable = true;
    2.  
     
    Ncysupport and FunFreighterGames like this.
unityunity