因此,问题的要点是我正在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使用的编译器不支持动态类型。在这种情况下,您有什么建议?
答案 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:从设计的角度来看,最好使用不同的方法GetHumans
,GetZombies
和GetPSG
,因为调用者必须已经能够区分这些方法。然后问题甚至没有出现。