按照我上面的教程,如果小伙伴们想同时保存玩家的血量值、饥饿值、盔甲值、呼吸值(原版四大HUD),那么只能这样写:
- public static HashMap<String,int> health = new HashMap(); //血量
- public static HashMap<String,int> hunger = new HashMap(); //饥饿
- public static HashMap<String,int> armor = new HashMap(); //盔甲
- public static HashMap<String,int> air = new HashMap(); //呼吸
复制代码 哇,怎么这么多个HashMap啊!管理起来也会十分烦人痛苦……为了使HashMap的个数少些,我们为什么不把这么多属性放到一起呢?
有小伙伴可能会问:HashMap中每个键只能对应一个值,该怎么聚合到一起呢?
那么,我们就自己来定义全新的对象,假设一个玩家对应一个对象,那么我们就这样写:
- public class playerData{ //直接新建类
- //对象的四个属性
- public int health;
- public int hunger;
- public int armor;
- public int air;
- //构造函数:在创建对象是必要的参数
- public playerData(int hp, int hg, int am, int ar){
- //对象的属性赋值操作
- this.health = hp;
- this.hunger = hg;
- this.armor = am;
- this.air = ar;
- }
- }
复制代码 然后,我们直接创建HashMap,并且设定值的类型为playerData:public HashMap<String,playerData> playerDatas = new HashMap();
看,我们把所有的属性都放进同一个HashMap啦!
如果要访问数据,就直接使用playerDatas.get(玩家名).health|hunger|armor|air
如果要新建数据,就直接使用playerDatas.put(玩家名, new playerData(20,20,0,20));
从YAML中保存、读取数据也是同理,直接访问即可