我正在学习libgdx,并且遇到了一个教程,该教程为游戏中的所有演员创建了UserData类,例如,针对演员,玩家,他制作了一个PlayerUserData类,该类扩展了UserData,后者是一个抽象类,具有一个称为getUserData返回一个枚举,指示它是哪种角色(地面,玩家,...)。在本教程中,他解释说他是用来存储信息的,它对于碰撞很有用。我对此不太了解,为什么不将信息存储在演员的演员类中?以及有关碰撞的哪些信息?

最佳答案

听起来很复杂...为什么不仅仅坚持下面的简单,久经考验的方法?

interface MyActor {

   enum Type {
       // Types of actors
       a, b, c, d
   }
   Type getType();
}

Actor1 implements MyActor
Actor2 implements MyActor
Actor3 implements MyActor
Actor4 implements MyActor


在从Actor接口的每个MyActor中,它必须返回类型为MyActor.Type的枚举,这样就没有继承,而且参与者显然没有必要使用任何层次结构。

每个实现ActorMyActor都有其自己的类,可以将它们一起存储在libGDX集合(例如Array<MyActor>())中,也可以轻松检查actor的相应类型。

编辑

您甚至可以在MyActor中添加以下方法,以方便检查角色的类型。

boolean isType(Type type);

关于java - libgdx用户数据类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43611646/

10-10 22:41