Version: 2022.3

Animator.GetCurrentAnimatorStateInfo

切换到手册
public AnimatorStateInfo GetCurrentAnimatorStateInfo (int layerIndex);

参数

layerIndex 层索引。

返回

AnimatorStateInfo 一个 AnimatorStateInfo,其中包含有关当前状态的信息。

描述

返回 AnimatorStateInfo,其中包含有关当前状态的信息。

从动画器中的当前状态获取数据。使用该函数可获取状态的详细信息,包括访问状态的速度、长度、名称和其他变量。要从状态持有的剪辑中收集信息,请参阅 Animator.GetCurrentAnimatorClipInfo

//Create a GameObject and attach an Animator component (Click the Add Component button in the Inspector window, go to Miscellaneous>Animator).
//Create an Animator by going to Assets >  Create > Animator Controller. Attach this Controller to the Animator attached to your GameObject
//In the Animator Controller, create a Trigger parameter in the Parameters tab and name it “Jump”. Then create states and transition arrows that use this parameter.

//This script triggers an Animation parameter when you press the space key.

using UnityEngine;

public class Example : MonoBehaviour { Animator m_Animator; //Use to output current speed of the state to the screen float m_CurrentSpeed;

void Start() { //Get the Animator, which you attach to the GameObject you intend to animate. m_Animator = gameObject.GetComponent<Animator>(); //The current speed of the first Animator state m_CurrentSpeed = m_Animator.GetCurrentAnimatorStateInfo(0).speed; }

void Update() { //Press the space bar to tell the Animator to trigger the Jump Animation if (Input.GetKeyDown(KeyCode.Space)) { m_Animator.SetTrigger("Jump"); }

//When entering the Jump state in the Animator, output the message in the console if (m_Animator.GetCurrentAnimatorStateInfo(0).IsName("Jump")) { Debug.Log("Jumping"); } }

void OnGUI() { //Output the first Animation speed to the screen GUI.Label(new Rect(25, 25, 200, 20), "Speed of State : " + m_CurrentSpeed); } }