如何延迟启动 x 秒?
How to delay start for x seconds?
我四处搜索但找不到答案。我有两个场景,一个带有开始下一个场景(游戏)的播放按钮,另一个场景是游戏。它有一个生成器脚本,可以生成随机模式的 obsticles。可以在这里看到。
public class Spawner : MonoBehaviour {
public GameObject[] obstaclePatterns;
private float timeBtwSpawn;
public float startTimeBtwSpawn;
public float decreaseTime;
public float minTime = 0.55f;
private void Update()
{
if (timeBtwSpawn <= 0)
{
int rand = Random.Range(0, obstaclePatterns.Length);
Instantiate(obstaclePatterns[rand], transform.position, Quaternion.identity);
timeBtwSpawn = startTimeBtwSpawn;
if (startTimeBtwSpawn > minTime) {
startTimeBtwSpawn -= decreaseTime;
}
}
else {
timeBtwSpawn -= Time.deltaTime;
}
}}
我想在按下播放按钮并开始游戏后,在生成器开始生成之前有 1 秒的延迟。我不知道该怎么做。任何帮助将不胜感激。
如果你想要一个在场景加载后经过特定时间后启动的例程,你可以使用 Time.timeSinceLevelLoad
this variable 保存自上一关(场景)以来的时间(以秒为单位)已加载
因此,您可以创建一个脚本来激活您的生成器脚本,或者向您的生成器脚本添加额外的检查
您应该在开始更新 Spawner 之前设置 timeBtwSpawn:
timeBtwSpawn = 1; // seconds
Unity的Start函数可以直接作为协程使用
private bool _canStart;
private IEnumerator Start()
{
yield return new WaitForSeconds(whatyouwant);
_canStart = true;
}
private void Update()
{
if(!_canStart) return;
whatyouwant
}
我四处搜索但找不到答案。我有两个场景,一个带有开始下一个场景(游戏)的播放按钮,另一个场景是游戏。它有一个生成器脚本,可以生成随机模式的 obsticles。可以在这里看到。
public class Spawner : MonoBehaviour {
public GameObject[] obstaclePatterns;
private float timeBtwSpawn;
public float startTimeBtwSpawn;
public float decreaseTime;
public float minTime = 0.55f;
private void Update()
{
if (timeBtwSpawn <= 0)
{
int rand = Random.Range(0, obstaclePatterns.Length);
Instantiate(obstaclePatterns[rand], transform.position, Quaternion.identity);
timeBtwSpawn = startTimeBtwSpawn;
if (startTimeBtwSpawn > minTime) {
startTimeBtwSpawn -= decreaseTime;
}
}
else {
timeBtwSpawn -= Time.deltaTime;
}
}}
我想在按下播放按钮并开始游戏后,在生成器开始生成之前有 1 秒的延迟。我不知道该怎么做。任何帮助将不胜感激。
如果你想要一个在场景加载后经过特定时间后启动的例程,你可以使用 Time.timeSinceLevelLoad
this variable 保存自上一关(场景)以来的时间(以秒为单位)已加载
因此,您可以创建一个脚本来激活您的生成器脚本,或者向您的生成器脚本添加额外的检查
您应该在开始更新 Spawner 之前设置 timeBtwSpawn:
timeBtwSpawn = 1; // seconds
Unity的Start函数可以直接作为协程使用
private bool _canStart;
private IEnumerator Start()
{
yield return new WaitForSeconds(whatyouwant);
_canStart = true;
}
private void Update()
{
if(!_canStart) return;
whatyouwant
}