Skip to content

循环

unity-csharp-loops-system

循环是什么

循环就是让一段代码重复执行。

比如你想生成 5 个敌人,不需要写 5 遍 Instantiate,可以用循环:

for (int i = 0; i < 5; i++)
{
    Instantiate(enemyPrefab);
}

for

适合:知道循环次数、需要下标。

for (int i = 0; i < 5; i++)
{
    Debug.Log(i);
}

输出:

0
1
2
3
4

注意没有 5,因为条件是 i < 5

Unity 例子:

for (int i = 0; i < 5; i++)
{
    Vector3 pos = new Vector3(i * 2f, 0f, 0f);
    Instantiate(enemyPrefab, pos, Quaternion.identity);
}

foreach

适合:遍历集合里的每一个元素。

foreach (GameObject enemy in enemies)
{
    enemy.SetActive(false);
}

读法:从 enemies 里面,每次拿出一个 enemy,然后执行一次代码。

while

适合:不知道循环多少次,只知道条件成立就继续。

while (hp > 0)
{
    hp -= 10;
}

注意:条件里的变量必须会变化,否则可能死循环。

do while

适合:至少要执行一次,然后再判断。

do
{
    RollDice();
}
while (!success);

break 和 continue

break:直接退出整个循环。

foreach (Enemy enemy in enemies)
{
    if (enemy.IsBoss)
    {
        target = enemy;
        break;
    }
}

continue:跳过本轮,进入下一轮。

foreach (Enemy enemy in enemies)
{
    if (enemy.IsDead)
    {
        continue;
    }

    enemy.Attack();
}

Unity 新手特别注意

Update() 本身就是每帧循环,不要用 while 在一帧里等待时间。

推荐:

void Update()
{
    timer += Time.deltaTime;

    if (timer >= 2f)
    {
        SpawnEnemy();
        timer = 0f;
    }
}

不要用死循环硬等,否则 Unity 可能卡住。

选择口诀

for:固定次数、需要下标。 foreach:遍历集合里的每一个。 while:条件成立就继续。 do while:至少执行一次。 break:退出循环。 continue:跳过本轮。

参考链接:

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0