从switch语句返回一个GameObject

gre*_*Bow 0 c# return switch-statement unity-game-engine

从switch语句返回GameObject的正确方法是什么?当我尝试返回头像时,我得到错误'使用未分配的局部变量'头像''.关于如何使用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;
}
Run Code Online (Sandbox Code Playgroud)

Pro*_*mer 6

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;
}
Run Code Online (Sandbox Code Playgroud)

2.null其设置为声明的位置:

更改

GameObject avatar;
Run Code Online (Sandbox Code Playgroud)

GameObject avatar = null;
Run Code Online (Sandbox Code Playgroud)