Search Unity

  1. Unity 2019.1 is now released.
    Dismiss Notice

Find all Animator transitions

Discussion in 'Extensions & OnGUI' started by FeastSC2, Jun 1, 2017.

  1. FeastSC2

    FeastSC2

    Joined:
    Sep 30, 2016
    Posts:
    556
    I'm creating a 2d game and the animation transitions 's exit time and transition durations are set to numbers which I don't want i.e not 1 for exit time and 0 for transition duration.

    How to find and set all the transitions' settings (animation duration/ exit time) of a given animator programmatically?
     
  2. FeastSC2

    FeastSC2

    Joined:
    Sep 30, 2016
    Posts:
    556
    Ok I found a decent way
    Code (CSharp):
    1.  
    2. var stateMachine = _animatorController.layers[0].stateMachine;
    3.             var states = stateMachine.states;
    4.  
    5.             List<AnimatorStateTransition> allTransitions = new List<AnimatorStateTransition>();
    6.             foreach (var state in states)
    7.             {
    8.                 allTransitions.AddRange(state.state.transitions);
    9.             }
    10.  
    11.             foreach (var transition in allTransitions)
    12.             {
    13.                 transition.duration = 0;
    14.                 transition.exitTime = 1;
    15.             }
    16.  
    17.  
    The _animatorController is something I feed to my Editor Window with:
    _animatorController = (AnimatorController)EditorGUILayout.ObjectField(_animatorController,
    typeof(AnimatorController), true);

    I don't know how to do this automatically every time a new transition is created, probably through events but I'm not familiar with that kind of stuff, so right now what I do is simply clean the specific Animator Controller.
    You could also get every Animation Controller in the project to do on every Animation Controller.
     
  3. OC_Raiz

    OC_Raiz

    Joined:
    Jul 4, 2016
    Posts:
    1
    thanks. what class are these "var's"?
    a bit unreadable
    _animatorController is it a "RuntimeAnimatorController"?
    or an "Animator"?
    Or something entirely else?

    Animator and RuntimeAnimatorController dont have a "layers" array.
     
  4. FeastSC2

    FeastSC2

    Joined:
    Sep 30, 2016
    Posts:
    556
    _animatorController is AnimatorController (class).