上一节内容结束后确实可以写入文件了,但还有两个问题:
1.一个是players.txt中,每次重启服务器,当注册新账号创建角色时,players.txt之前内容都会清空。
2.players.txt之前已经注册3次的账号,新注册的角色信息不会写入players.txt,猜测与userPlayerIds.txt中的残留内容有关。但userPlayerIds.txt中的内容感觉不全!
先解决第一个问题:上边 userPlayerIds.txt的内容是可以成功读出来并且转化的,players.txt中的内容转化失败,所以此时就是空的!
就是json转换结构体上出现了问题,账号那可以的,换到这就出问题了!
对比来看AccountModel和PlayerModel基本上大同小异
Newtonsoft.Json.JsonSerializationException:“Unable to find a constructor to use for type GameServer.model.PlayerModel. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path '431b0501-457f-46ba-91dd-353c8a3c8c0c.id', line 3, position 9.”
Newtonsoft。Json。JsonSerializationException:“找不到用于类型GameServer.model.PlayerModel的构造函数。类应该有一个默认构造函数、一个带参数的构造函数或一个用JsonConstructor属性标记的构造函数。路径'431b0501-457f-46ba-91dd-353c8a3c8c8c.id',第3行,位置9。”
就是PlayerModel类没有构造函数!
namespace GameServer.model
{internal class PlayerModel{public string id { get; set; }public string name { get; set; }public int job { get; set; }public int level { get; set; }public int exp { get; set; }public int atk { get; set; }public int def { get; set; }public int hp { get; set; }public int maxHp { get; set; }public Vector3 point { get; set; }public Vector4 rotation { get; set; }public int map { get; set; }public PlayerModel(PlayerModel model){this.job = model.job;this.level = model.level;this.exp = model.exp;this.atk = model.atk;this.def = model.def;this.hp = model.hp;this.maxHp = model.maxHp;}public PlayerModel(int job,int level,int exp,int atk,int def,int map,int hp,int maxHp){this.job = job;this.level = level;this.exp = exp;this.atk = atk;this.def = def;this.map = map;this.hp = hp;this.maxHp = maxHp;}}
}
很明显是有构造函数的,还有2个,没想到再加一个
public PlayerModel()
{ }
的确是解决了!: