Appearance
循环
循环是什么
循环就是让一段代码重复执行。
比如你想生成 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:跳过本轮。
参考链接: