每隔几秒在两个函数的执行之间切换
Switch between execution of two functions every few seconds
我正在使用 Unity 和 C#。我的游戏会无限运行,除非玩家被摧毁。
如何每隔几秒在两个函数的执行之间切换,目前我使用的是 if 语句,但我不能那样做,因为游戏会永远运行,这需要无限数量的条件。
我想隔几秒交替执行这两个if语句下的代码
那么,我该如何实现呢?
private void Update ()
{
timeelapsed += Time.deltaTime;
Debug.Log(timeelapsed);
if (timeelapsed >= 20f && timeelapsed <= 40f)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
if (timeelapsed > 40f && timeelapsed <= 60f)
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
}
}
只需重置 timeelapsed
变量:
void Update () {
timeelapsed += Time.deltaTime;
Debug.Log(timeelapsed);
if (timeelapsed < 20f)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
else
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
if (timeelapsed >= 40f) timeelapsed = 0f;
}
}
如果您不想更改 timeelapsed
的值,您可以这样做:
int quotient = (int)timeelapsed / 20;
if (quotient % 2 == 0)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
else
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
}
最优雅的方法是使用内置的协程机制
WaitForSeconds waiter = new WaitForSeconds(20);
IEnumerator Start()
{
while(true)
{
DoOneThing();
yield return waiter;
DoAnotherThing();
yield return waiter;
}
}
我正在使用 Unity 和 C#。我的游戏会无限运行,除非玩家被摧毁。
如何每隔几秒在两个函数的执行之间切换,目前我使用的是 if 语句,但我不能那样做,因为游戏会永远运行,这需要无限数量的条件。
我想隔几秒交替执行这两个if语句下的代码
那么,我该如何实现呢?
private void Update ()
{
timeelapsed += Time.deltaTime;
Debug.Log(timeelapsed);
if (timeelapsed >= 20f && timeelapsed <= 40f)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
if (timeelapsed > 40f && timeelapsed <= 60f)
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
}
}
只需重置 timeelapsed
变量:
void Update () {
timeelapsed += Time.deltaTime;
Debug.Log(timeelapsed);
if (timeelapsed < 20f)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
else
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
if (timeelapsed >= 40f) timeelapsed = 0f;
}
}
如果您不想更改 timeelapsed
的值,您可以这样做:
int quotient = (int)timeelapsed / 20;
if (quotient % 2 == 0)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
else
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
}
最优雅的方法是使用内置的协程机制
WaitForSeconds waiter = new WaitForSeconds(20);
IEnumerator Start()
{
while(true)
{
DoOneThing();
yield return waiter;
DoAnotherThing();
yield return waiter;
}
}