本地游戏物体变量在使用switch方法时无法工作(Unity)

3

我知道这很基础,但我找不到答案。 我有一个应该返回不同类型游戏对象的函数。我喜欢使用switch方法来描述每种类型的东西。下面的代码显示了错误以及发生错误的行:

GameObject getElement(string type)
{
    GameObject newGO;

    switch(type)
    {
        case "A":
           newGO= functionWhichReturnsGameObjectWithTypeA();
           break;
        case "B":
           newGO= functionWhichReturnsGameObjectWithTypeB();
           break;
    }

    return newGO; // error: Use of unassigned local variable 'newGO'
}


GameObject myGO = getElement("A");

3
type不是"A""B"时会发生什么?你的switch语句中没有default情况,并且newGO变量在这种情况下不会被赋值。 - canton7
3
将变量初始化为null:GameObject newGO = null; - Stefan
1
@Ruzihm 感谢你的提示。实际上,错误信息在代码注释中,但我理解你的意思。 - wyy
2个回答

3

在每个执行流程中都需要给newGO赋值,因此应该有一个默认情况,其中如果type参数应为"A""B"newGO绝不应为空,则会抛出异常,或者仅在可能时将其设置为null

以下代码应该可以正常工作:

GameObject newGO;

switch(type)
{
    case "A":
       newGO= functionWhichReturnsGameObjectWithTypeA();
       break;
    case "B":
       newGO= functionWhichReturnsGameObjectWithTypeB();
       break;
    default:
       throw new ArgumentException("Unexpected argument");
}

或者:

default:
   return null;

0

感谢@Stefan的评论,这解决了问题:

GameObject newGO = null; 

如果值不应为 null,请记住它可能会通过编译器错误,但可能会导致运行时错误。 - asaf92

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接