簡體   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