繁体   English   中英

我们如何在每 X 秒内统一运行一个程序

[英]How do we run a program in every X seconds in unity

所以基本上我想做的是每隔 X 秒传送我的立方体,这就是我所做的:

public class Teleport_Cube : MonoBehaviour
{
    public Transform cubepos; //my cube postition
    public List<Transform> transforms = new List<Transform>();


    void Start()
    {   
        int pos = Random.Range(0, transforms.Count); // Code i wanted to execute after X seconds
        cubepos.position = transforms[pos].position; // Code i wanted to execute after X seconds
        StartCoroutine(waitforsec(5));
    }

    IEnumerator waitforsec(float seconds)
    {
        yield return new WaitForSeconds(seconds);
    }

}

它似乎没有用,它只是传送一次并留下来。

我也在 void Update 方法中完成了它,它只是传送每一帧。

也许你能帮我找到解决办法?? Tysm:祝你有美好的一天:)

您可以使用InvokeRepeating()方法来实现您的目标

void Start()
{
    InvokeRepeating("TeleportCube", 0, 5.0f);
}

void TeleportCube()
{
    int pos = Random.Range(0, transforms.Count); // Code i wanted to execute after X seconds
    cubepos.position = transforms[pos].position; // Code i wanted to execute after X seconds
}

它传送一次的原因是因为它只在 Start function 中被调用一次。 这是您需要做的。

public class Teleport_Cube : MonoBehavior 
{
    public Transform cubepos; //my cube postition
    public List<Transform> transforms = new List<Transform>();

    void Start()
    {  
    StartCoroutine(myStart());
    }

    IEnumerator myStart() {
        while(true) {
            int pos = Random.Range(0, transforms.Count); // Code i wanted to execute after X seconds
            cubepos.position = transforms[pos].position; // Code i wanted to execute after X seconds
            StartCoroutine(waitforsec(5))
        }
        yeild return null;
    }

    IEnumerator waitforsec(float seconds)
    {
        yield return new WaitForSeconds(seconds);
    }

}

myStart function 将永远重复,或者只要你在 while 循环中放置的任何内容都是错误的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM