Вернуть GameObject из оператора switch - PullRequest
0 голосов
/ 28 апреля 2018

Как правильно вернуть GameObject из оператора switch? Когда я пытаюсь вернуть аватар, я получаю сообщение об ошибке «использование неназначенной локальной переменной« аватар ». Я немного запутался в том, как заставить возврат работать с оператором switch. Спасибо за помощь!

private GameObject GetAnimalAvatar(string animal)
{
    GameObject avatar;

    switch (animal)
    {
        case "bear":
            avatar = ForestGameManager.fgm.bearAvatar;
            break;

        case "boar":
            avatar = ForestGameManager.fgm.boarAvatar;
            break;

        case "doe":
            avatar = ForestGameManager.fgm.doeAvatar;
            break;

        default:
            break;
    }

    return avatar;
}

1 Ответ

0 голосов
/ 28 апреля 2018

Переменная avatar не будет инициализирована, если не будет выполнено ни одно из условий, поскольку она просто объявлена ​​как GameObject avatar;, что приводит к этой ошибке.

У вас есть два варианта:

1 . Инициализируйте или установите для переменной avatar значение null в проверке по умолчанию. Это означает, что если ни одно из условий не будет выполнено, то будет выполнено default и ваше дело будет установлено на null.

switch (animal)
{
    case "bear":
        avatar = ForestGameManager.fgm.bearAvatar;
        break;

    case "boar":
        avatar = ForestGameManager.fgm.boarAvatar;
        break;

    case "doe":
        avatar = ForestGameManager.fgm.doeAvatar;
        break;

    default:
        //INITIALIZED TO NULL
        avatar = null;
        break;
}

2 . Установите null, где объявлено:

Изменение

GameObject avatar;

до

GameObject avatar = null;
...