使用切换方法(Unity),局部gameobject变量不起作用

时间:2019-10-23 08:18:57

标签: c# unity3d

我知道这是基本知识,但是我找不到答案。我有一个应该返回不同类型游戏对象的函数。我喜欢使用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");

2 个答案:

答案 0 :(得分:3)

您需要在每个执行流程中为newGO赋予一个值,因此有一个默认情况,如果type参数应为"A"或{{1 }}和"B"绝不能为null,或者尽可能将其设置为null。

这应该有效:

newGO

或:

GameObject newGO;

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

答案 1 :(得分:0)

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

GameObject newGO = null;