【发布时间】:2019-08-26 20:05:25
【问题描述】:
所以,问题的要点是我在 Unity 中使用 GameObjects 进行编程。我想要一个返回三个不同对象的函数。出现的主要问题是其中两个是游戏对象列表,另一个只是单个游戏对象。解决此问题的最佳方法是什么?这是我当前的代码。
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 使用的编译器不支持动态类型。在这种情况下,您有什么建议?
【问题讨论】:
-
解释一下
psgObject是什么。 -
@Aybe 这是一个游戏对象,基本上是一个球体,如果人类没有靠近僵尸,他们就会追逐。
-
好吧,您的方法的意图尚不清楚,您在什么情况下调用它?用游戏机制术语解释。
-
这感觉像是设计问题而不是实现问题,但您可以只返回一个列表,其中包含您的对象作为单个项目。
-
@Aybe 基本上这是 GameManager 类,其中一切都被实例化(人类、僵尸、紫色荣耀球体)。人类、僵尸和 PSG 需要相互引用,因此 GameManger 有一个带有 int const 的静态方法 getter,以便于检索引用。例如,人类需要 PSG 和 Zombies 列表来知道僵尸在哪里并在它们靠近时逃跑,当然还需要 PSG 位置来知道在哪里找到和追逐它。
标签: c# unity3d types return return-type