| stateName | 状态名称。 | 
| stateNameHash | 状态哈希名称。如果 stateNameHash 为 0,则更改当前状态时间。 | 
| layer | 层级索引。如果 layer 为 -1,则播放具有给定状态名称或哈希值的第一个状态。 | 
| normalizedTime | 0 到 1 之间的时间偏移量。 | 
播放状态。
当您指定状态名称或用于生成哈希的字符串时,它应包含父层级的名称。例如,如果您在 Base Layer 中有一个 Bounce 状态,则名称为 Base Layer.Bounce。normalizedTime 参数在 0 和 1 之间变化。如果此参数保持为零,则 Play 将按预期运行。可以给出不同的起始点。例如,可以将 normalizedTime 设置为 0.5,这意味着动画从中间开始。如果从一个状态到另一个状态的过渡,它可能会或可能不会混合。如果过渡从 0.75 开始,它将与另一个状态混合。如果没有设置过渡,则 Play 将继续到 1.0 且没有任何更改。
以下示例脚本为立方体设置动画。
此立方体有两个 Animator 状态,称为 Rest 和 Bounce。Rest 状态中播放了一个空动画。当按下空格键时,立方体切换到 Bounce 状态。这会导致立方体上下跳动两次。然后,立方体返回到 Rest 状态。由于 Bounce 是从 Animator.Play 脚本中选择的,因此不需要过渡。但是,从 Bounce 返回到 Rest 确实有一个过渡。Has Exit Time 被选中以使 Bounce 持续一秒钟。将此脚本附加到您想要设置动画的 GameObject 上。
using UnityEngine;
// Press the space key in Play Mode to switch to the Bounce state.
public class Move : MonoBehaviour { private Animator anim;
void Start() { anim = GetComponent<Animator>(); }
void Update() { if (Input.GetKeyDown(KeyCode.Space)) { if (anim != null) { // play Bounce but start at a quarter of the way through anim.Play("Base Layer.Bounce", 0, 0.25f); } } } }