存储角色信息的最佳方式

时间:2017-11-02 09:16:26

标签: libgdx

我正在创建一个简单的2D游戏。我有玩家角色和敌人产生每个级别。每个级别都有自己的一组敌人,数量为1-6。玩家角色可以升级到各种类 - 意味着每个类都有自己的纹理。 存储玩家角色数据的最佳方式是什么(玩家纹理,属性) 如何告诉游戏如何定位敌人(不同数量的敌人的不同布局)

我读到了关于JSON的内容,但是如果你有大量的数据显然它会变慢(我不确定我的情况是否很慢)。在我的情况下,大约有30种不同的玩家路径和许多不同的敌人位置。

3 个答案:

答案 0 :(得分:1)

存储纹理,声音,平铺地图,字体等。使用AssetManager类。它可以实时加载纹理和其他资源(不会丢失FPS)。如果不再需要,您还可以unload资源。当有需要时,再次load

JSON的描述并不那么慢。仅存储每个实体唯一的数据。例如僵尸敌人:

{
"zombie" {"x": 100, "y": 10},
"zombie" {"x": 100, "y": 20},
}

其他数据可以在课堂上声明。

class Zombie {

   int width;
   int height;
   Texture texture;

   int x; // initialize later, when load from JSON
   int y;

   public Zombie(Texture texture, int width, int, height){
       this.texture = texture;
       this.width = width;
       this.height = height;
   }

}

答案 1 :(得分:0)

我正在使用Preferences类。它非常简单方便。要保存播放器的当前纹理,您不需要存储纹理本身。您可以保存纹理索引或其名称:

Preferences progress;
...
progress.putInteger("playerTextureIndex ", 0); // for save
playerTextureIndex = progress.getInteger("playerTextureIndex ", 0); // for load

然后启动适当的纹理。

答案 2 :(得分:0)

对于敌人的定位,我喜欢在Tiled Maps(.tmx)中定义位置。在编辑器中,我只需创建一个简单的矩形来标记位置。

在代码中然后我得到所有MapObjects并将它们分配给Box2D主体和灯具。我通常会编辑宽度和高度,因为精灵的尺寸在瓷砖中非常完美并不常见。

然后在Sprite类的构造函数中,我接收了一个Box2D体。

对于资产,加载和存储它们的最佳方法是使用AssetManager。它可以在非常快的时间内加载所有资产,并且比没有它时加载它们更好。

我希望这个答案对您有所帮助,如果您有任何其他问题,请在下面发表评论!