Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 完成后一个接一个地播放两个单独的动画_C#_Unity3d - Fatal编程技术网

C# 完成后一个接一个地播放两个单独的动画

C# 完成后一个接一个地播放两个单独的动画,c#,unity3d,C#,Unity3d,我尝试在unity中一个接一个地播放两个动画(每个动画是主摄影机的两个独立路径),根据我的研究,我认为我需要使用以下内容: // Update is called once per frame void Update () { animation.PlayQueued("CameraMovement", QueueMode.PlayNow); animation.PlayQueued("SpaceSceneMovement", QueueMode.CompleteOth

我尝试在unity中一个接一个地播放两个动画(每个动画是主摄影机的两个独立路径),根据我的研究,我认为我需要使用以下内容:

    // Update is called once per frame
void Update () {

    animation.PlayQueued("CameraMovement", QueueMode.PlayNow);
    animation.PlayQueued("SpaceSceneMovement", QueueMode.CompleteOthers);

}
然而,在我的相机上附加了这个代码后,我的游戏仍然只播放第一条路径。我创建了路径,因此不同路径之间应该有半秒的延迟。我的相机的动画组件中有这两个动画(见附图),我很困惑为什么这不起作用

我错过什么了吗


如用户2025312所述,您正在每帧调用代码。也就是说,你告诉它立即播放第一个动画的每一帧,然后你将第二个动画排队。那不行

根据你想做什么,你有几个选择。假设您希望在循环中连续播放这两个动画。你能做的是:

void Update () {
    if (!animation.isPlaying)
    {
        animation.PlayQueued("CameraMovement", QueueMode.PlayNow);
        animation.PlayQueued("SpaceSceneMovement", QueueMode.CompleteOthers);
    }
}
这应该很容易理解,它会检查是否正在播放动画,如果没有,它会将两个动画排队,立即播放第一个动画。这将在
Update()
中正常工作

但是,如果您希望只播放一次动画序列(或在触发时),请将这两行放在
Start()
或您选择的方法中

void Start () {
    animation.PlayQueued("CameraMovement", QueueMode.PlayNow);
    animation.PlayQueued("SpaceSceneMovement", QueueMode.CompleteOthers);
}

那应该行得通。如果没有,请验证动画是否单独工作

我没有时间给您写一个正确的解决方案,但Update会在每一帧中运行,因此您将启动第一帧,对第二帧进行排队,然后在下一帧中以更高的优先级播放第一帧(playnow)。这将无限期地重复,每一帧意味着只有第一个动画才会播放。如果这是一次性的,也许将代码移动到Start()尝试过,但仍然不起作用。谢谢。这很有效。结果我还勾选了“自动播放”。我把它关掉了,现在可以正常工作了。