Unity - 如何进行多次延迟?

时间:2018-03-19 21:25:51

标签: c# function unity3d

我的脚本中有一个函数调用5个命令,如下所示:

public class ScrambleScript : MonoBehaviour {    
    public RRotation ScrambleR; // reference for R rotation 
    public LRotation ScrambleL; // reference for L rotation
    public FRotation ScrambleF; // reference for F rotation
    public DRotation ScrambleD; // reference for D rotation
    public Rotation  ScrambleU; // reference for U rotation

    void ScrambleCube() {    
        ScrambleR.ScrambleRNotation();
        ScrambleU.ScrambleUNotation();
        ScrambleL.ScrambleLNotation();
        ScrambleF.ScrambleFNotation();
        ScrambleD.ScrambleDNotation();
    }
}

一旦我在Update()中调用此函数,每个帧都会调用这些命令,但是我希望能够创建另一个延迟函数,我可以使用它在每个函数调用之间暂停1秒,所以它看起来像这样:

void ScrambleCube() {    
        ScrambleR.ScrambleRNotation();
        // waits 1 second here.
        ScrambleU.ScrambleUNotation();
        // waits 1 second here.
        ScrambleL.ScrambleLNotation();
        // waits 1 second here.
        ScrambleF.ScrambleFNotation();
        // waits 1 second here.
        ScrambleD.ScrambleDNotation();
    }

我已尝试使用IEnumerator功能,但如果我在上面显示的每个函数调用之间粘贴延迟,我似乎无法工作。还有另一种方法吗?或者我错误地使用了IEnumerator

1 个答案:

答案 0 :(得分:0)

您可以使用IEnumerators

在Unity中使用名为Coroutines的原则
public IEnumerator ScrambleCube () {
    ScrambleR.ScrambleRNotation();
    yield return new WaitForSeconds(1); // This pauses the execution of 
                                        // the function for 1 second
    ScrambleU.ScrambleUNotation();
    // etc...
}

请注意,您无法仅通过方法名称调用协同程序,您必须使用一种名为MonoBehaviours的{​​{1}}方法。

StartCoroutine

请注意,启动协程将延迟执行发出StartCoroutine(ScrambleCube()); 调用的方法。