返回单个类型还是类型列表?

时间:2019-04-05 00:10:26

标签: c# unity3d types return return-type

因此,问题的要点是我正在Unity中使用GameObjects进行编程。我想要一个返回三个不同对象的函数。出现的主要问题是其中两个是GameObjects列表,另一个只是一个GameObject。解决此问题的最佳方法是什么?这是我目前的代码。

static List<GameObject> zombies;
static List<GameObject> humans;
static GameObject psgObject;

public const int HUMAN = 0;
public const int ZOMBIE = 1;
public const int PSG = 2;

public static object GetObject(int @object)
{
    switch(@object)
    {
        case HUMAN:
            return humans;
        case ZOMBIE:
            return zombies;
        case PSG:
            return psgObject;
        default:
            Debug.Log("GetObject() method error");
            return null;
    }
}

此代码的尴尬之处在于,无论何时调用该函数,都需要强制转换。我尝试使用动态类型,但是Unity使用的编译器不支持动态类型。在这种情况下,您有什么建议?

1 个答案:

答案 0 :(得分:1)

只需将您的GameObject变成一个列表,然后对所有内容都使用相同的返回类型,即

public static List<GameObject> GetObject(int @object)
{
    switch(@object)
    {
        case HUMAN:
            return humans;
        case ZOMBIE:
            return zombies;
        case PSG:
            return new List<GameObject>() { psgObject };
        default:
            Debug.Log("GetObject() method error");
            return null;
    }
}

或者将psgObject静态变量更改为列表并直接返回。

PS:从设计的角度来看,最好使用不同的方法GetHumansGetZombiesGetPSG,因为调用者必须已经能够区分这些方法。然后问题甚至没有出现。