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); } } } }