Search Unity

  1. Unity 2018.3 is now released.
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. Want more efficiency in your development work? Sign up to receive weekly tech and creative know-how from Unity experts.
    Dismiss Notice
  4. Build games and experiences that can load instantly and without install. Explore the Project Tiny Preview today!
    Dismiss Notice
  5. Nominations have been announced for this years Unity Awards. Celebrate the wonderful projects made by your peers this year and get voting! Vote here!
    Dismiss Notice
  6. Want to provide direct feedback to the Unity team? Join the Unity Advisory Panel.
    Dismiss Notice
  7. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice

Find all Animator transitions

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

  1. FeastSC2

    FeastSC2

    Joined:
    Sep 30, 2016
    Posts:
    460
    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:
    460
    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:
    460
    _animatorController is AnimatorController (class).