我刚开始使用Unity,我想构建以下函数:现在我按下一个按钮,它会在屏幕外产生一个小行星,然后小行星从右向左移动,最后我会在屏幕外摧毁小行星。所有这些都已经工作了。但是现在我想改变按钮的功能,使它延迟几秒钟产生更多的小行星。我不知道该怎么做。我的代码现在看起来像这样:
public class ButtonSkript : MonoBehaviour
{
private Vector3 spawnPosition = new Vector3(15, 0, 0);
public GameObject planet_001Prefab;
public GameObject planet_011Prefab; // not in use
public GameObject planet_017Prefab; // not in use
public GameObject planet_079Prefab; // not in use
public void ShowJourney()
{
int[] asteroids_array = {27, 569, 1293, 37};
int[] material_type_array = {0, 2, 1, 3}; // not in use
for (int i = 0; i < asteroids_array.Length; i++) {
GameObject a = Instantiate(planet_001Prefab);
a.transform.position = spawnPosition;
Destroy(a, 3);
// wait for 3 seconds
}
}
}
public class Translate : MonoBehaviour
{
public float speed = 10.0f;
// Update is called once per frame
void Update()
{
moveAsteroid(new Vector2(-1, 0));
}
void moveAsteroid(Vector2 direction)
{
transform.Translate(direction * speed * Time.deltaTime);
}
}
我已经尝试过System.Threading.Thread.Sleep(3000);
,我也尝试过用IEnumarate
和yield return new waitForSeconds(3.0f);
构建一个计时器,但是这两个东西都不起作用,或者我没有正确地实现它。
这也许是个简单的问题,但我自己想不出来。
谢谢你的帮助:)
1条答案
按热度按时间flmtquvp1#
触发一个协程,产生3秒,然后产生资产。
这将允许执行继续计算当前帧,而您的协程并行运行。
参考:https://docs.unity3d.com/Manual/Coroutines.html
按键命令:生成返回新等待秒数(3.0f);