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