版本: Unity 6 (6000.0)
语言英语
  • C#

Animation.Play

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public bool Play(PlayMode mode = PlayMode.StopSameLayer);

声明

public bool Play(string animation, PlayMode mode = PlayMode.StopSameLayer);

返回值

bool 如果没有提供名称并且没有默认动画,则此方法返回 false。否则,它返回 true

描述

播放动画,不进行混合。

如果没有提供名称,则会播放默认动画。使用可选的 PlayMode 来选择此动画如何影响正在播放的动画。

如果指定的动画正在播放,则其他动画将被停止,但动画不会倒回开头。动画结束时,它将自动停止并倒回开头,除非 PlayMode 设置为 Loop。如果在帧更新期间对已 停用 的对象调用 Animation.Play,则该调用将被有效地取消。该动画在对象稍后重新激活时不会开始播放。但是,如果在后续帧(对象仍然处于非活动状态时)调用该方法,则动画将在重新激活后开始播放。

要使用 Animation.Play,动画数据必须在 Inspector 窗口中可见。此窗口包含 GameObject 中所有动画的数组。例如,两个动画 jumpspin 存储在 Animations 列表中。 Animation.Play 可以播放这些动画中的每一个。 Animation 也可以组合动画。为此,使用了(不受支持且未记录的) AnimationState.layer。例如,将 jump 放在层 0,将 spin 移动到层 123,将允许它们一起播放。

必须在 Inspector 中将动画标记为“传统”,才能使此方法找到这些动画。在将 Inspector 窗口切换到“调试”后,将显示此选项。

using UnityEngine;

// Animation.Play example. Let the S and J keys start // a spin or jump animation. Let Space play back spin and // jump at the same time. Let Z play spin and jump with // spin doubled in speed. // // Spin: rotate the cube 360 degrees in half or one second // Jump: bounce up to 2 units and down in one second // // Note: AnimationState.layer is no longer supported, but still exists.

public class ExampleScript : MonoBehaviour { private Animation anim;

void Start() { anim = gameObject.GetComponent<Animation>(); anim["spin"].layer = 123; }

// double the spin speed when true private bool fastSpin = false;

void Update() { // leave spin or jump to complete before changing if (anim.isPlaying) { return; }

if (Input.GetKeyDown(KeyCode.S)) { Debug.Log("Spinning"); anim.Play("spin"); }

if (Input.GetKeyDown(KeyCode.J)) { Debug.Log("Jumping"); anim.Play("jump"); }

// combine jump and spin if (Input.GetKeyDown(KeyCode.Space)) { Debug.Log("Jumping and spinning"); anim.Play("jump"); anim.Play("spin"); }

// have spin speed reverted to 1.0 second if (fastSpin == true) { anim["spin"].speed = 1.0f; fastSpin = false; }

if (Input.GetKeyDown(KeyCode.Z)) { Debug.Log("Jumping and spinning in half a second"); anim.Play("jump"); anim["spin"].speed = 2.0f; anim.Play("spin");

// we've used spin at a speed of two, now mark // the spin speed to revert back to one fastSpin = true; } } }