Локальная переменная gameobject не работает с использованием метода switch (Unity) - PullRequest
2 голосов
/ 23 октября 2019

Я знаю, что это просто, но я не смог найти ответ. У меня есть функция, которая должна возвращать игровой объект разных типов. Мне нравится использовать метод переключения для описания каждого типа вещи. Ошибка и строка, в которой она возникает, показана в коде ниже:

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 ]

3 голосов
/ 23 октября 2019

Вам необходимо присвоить newGO значение в каждом потоке выполнения, поэтому используйте случай по умолчанию, в котором вы выбрасываете исключение, если аргумент type должен быть либо "A", либо "B", а newGO никогда не должноnull, или просто установите его в 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 голосов
/ 23 октября 2019

Благодаря комментарию @Stefan, это помогло:

GameObject newGO = null; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...