Возврат одного типа или списка типов? - PullRequest
0 голосов
/ 05 апреля 2019

Итак, суть проблемы в том, что я программирую с GameObjects в Unity.И я хочу функцию, которая возвращает три разных объекта.Основная проблема, которая возникает, состоит в том, что два из них являются списками 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 Ответ

1 голос
/ 05 апреля 2019

Просто превратите ваш единственный 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: С точки зрения дизайна было бы намного лучше иметь разные методы GetHumans, GetZombies и GetPSG, так как вызывающий уже должен уметь их различать.И тогда вопрос даже не возникает.

...