[英]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.