
Switch语句用作简化if-else结构的替代方法,可提高Unity中的执行效率,当你想将单个变量与一系列常量进行比较时,它很有用,那么本文聊一聊Switch语句以及如何使用它。
在下面的代码中使用了if语句来检查powerUp对象的ID是否等于0、1和2。
private void onTriggerEnter2D(Collider2D col)
{
if (col.compareTag("Player"))
{
Player player = col.GetComponent<Player>();
if (player != null)
{
if (_powerUpID == 0)
{
player.ActivateTripleshot();
}
else if (_powerUpID == 1)
{
player.ActivateSpeedBoost();
}
else if (_powerUpID == 2)
{
player.Activateshield();
}
}
}
}
上面的代码写的没问题,但是…如果powerUp对象有20次!该怎么办?
这样下来只会让工作乱七八糟,因为需要使用大量的if和if-else语句,此时switch语句就派上用场了,特别是当你有很多检查条件需要做的时候,如果使用了switch语句,则效果就不一样了。
它可以在处理相同的结果的同时清理这些循环臃肿的东西,并让代码变得更加简洁,还可以让工作效率更高效。
大家也可以前往unity官方看看Switch Statements不一样的教程内容。
从下面的内容中可以看到使用了switch语句相比之前的一堆if和if-else语句相比,看起来更加简洁,而且在执行多项检查时switch语句的效率要大的多。
private void OnTriggerEnter2D( col)
{
if (col.compareTag("Player"))
{
Player player = col.GetComponent<Player>();
if (player != null)
{
switch (_powerUpID)
{
case 0:
player.ActivateTripleshot();
break;
case 1:
player.ActivateSpeedBoost();
break;
case 2:
player.Activateshield();
break;
default:
break;
}
}
}
}