Version: 2023.2
public void Play (string stateName, int layer= -1, float normalizedTime= float.NegativeInfinity);
public void Play (int stateNameHash, int layer= -1, float normalizedTime= float.NegativeInfinity);

参数

stateName 状态名称。
stateNameHash 状态哈希名称。如果 stateNameHash 为 0,则会更改当前状态时间。
layer 层的索引。如果 layer 为 -1,则播放第一个具有给定状态名称或哈希的状态。
normalizedTime 介于零到一之间的时间偏移。

描述

播放一个状态。

指定状态名称(即用于生成哈希的字符串)时,它应包含父层的名称。例如,如果 Base Layer 中有 Bounce 状态,则名称为 Base Layer.BouncenormalizedTime 参数的值介于 0 和 1 之间。如果此参数保留为零,则 Play 将按预期运行。可以提供不同的起点。例如,可以将 normalizedTime 设置为 0.5,这意味着动画从中途开始。如果过渡是从一个状态切换到另一个状态,可以混合也可以不混合。如果过渡从 0.75 开始,它将与另一个状态混合。如果未设置过渡,则 Play 将保持为 1.0 而不进行任何更改。

\ 以下示例脚本将生成立方体的动画。

此立方体有两个动画器状态,分别名为 RestBounce。在 Rest 中将播放空的动画。按下空格键后,立方体将切换到 Bounce 状态。这会使立方体上下跳动两次。然后立方体返回到 Rest 状态。因为从 Animator.Play 脚本中选择了 Bounce,所以不需要过渡。但从 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 though anim.Play("Base Layer.Bounce", 0, 0.25f); } } } }