在实例化对象上播放/停止动画/动画制作

时间:2018-06-09 03:01:48

标签: c# unity3d

我正在开发一个统一游戏,基本上,我有一个带有精灵的预制件。我创建了一个附加到该精灵的动画。

FrogPrefab
    |__ FrogSprite

我创建了一个带有公共字段的脚本" prefab"我通过预制件的地方。

我的问题是,如何从我的剧本中停止并播放此动画。

我从我的开始方法中实例化了我的预制件......

public GameObject gameCharacterPrefab;

private GameObject frog;

void start() {
    frog = (GameObject)Instantiate(gameCharacterPrefab, objectPoolPosition, Quaternion.identity);
}

我试图做那样的事情......

frog.animation.stop();

感谢任何帮助

2 个答案:

答案 0 :(得分:2)

首先,请注意该函数应调用Start而不是start。也许这是问题中的错字,但值得一提。

使用GetComponent获取AnimatorAnimation组件。如果动画是预制件的子节点,则使用GetComponentInChildren

如果使用Animator组件:

public GameObject gameCharacterPrefab;
private GameObject frog;
Vector3 objectPoolPosition = Vector3.zero;
Animator anim;

实例化预制件

frog = (GameObject)Instantiate(gameCharacterPrefab, objectPoolPosition, Quaternion.identity);

获取Animator组件

anim = frog.GetComponent<Animator>();

播放动画状态

anim.Play("AnimStateName");

停止动画

anim.StopPlayback();

如果使用Animation组件:

public GameObject gameCharacterPrefab;
private GameObject frog;
Vector3 objectPoolPosition = Vector3.zero;
Animation anim;

实例化预制件

frog = (GameObject)Instantiate(gameCharacterPrefab, objectPoolPosition, Quaternion.identity);

获取Animation组件

anim = frog.GetComponent<Animation>();

播放动画名称

anim.Play("AnimName");

停止动画

anim.Stop();

答案 1 :(得分:0)

对于播放动画,我们可以使用Play(),但是为了停止动画,在Unity 2019或更高版本中,Stop方法已过时。因此,对于禁用动画,我们可以使用enable标志并将其设置为false。

//For playing the animation
frog.GetComponent<Animator>().Play(); 
or
frog.GetComponent<Animator>().enable = true; 

//For stop the animation
frog.GetComponent<Animator>().enabled = false;