首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >团结-如何拖延几次?

团结-如何拖延几次?
EN

Stack Overflow用户
提问于 2018-03-19 21:25:51
回答 1查看 171关注 0票数 0

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

代码语言:javascript
运行
复制
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秒,所以它看起来如下所示:

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-19 21:41:56

您可以使用统一中的一个原则,称为协同使用( IEnumerators )。

代码语言:javascript
运行
复制
public IEnumerator ScrambleCube () {
    ScrambleR.ScrambleRNotation();
    yield return new WaitForSeconds(1); // This pauses the execution of 
                                        // the function for 1 second
    ScrambleU.ScrambleUNotation();
    // etc...
}

请注意,您不能简单地按其方法名称调用coroutines,您必须使用一个名为MonoBehavioursStartCoroutine方法。

代码语言:javascript
运行
复制
StartCoroutine(ScrambleCube());

请注意,启动协同线不会延迟发出StartCoroutine调用的方法的执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49372589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档