unity学习(50)——服务器三次注册限制以及数据库化角色信息5--角色信息数据库化收尾

上一节内容结束后确实可以写入文件了,但还有两个问题:

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类没有构造函数!

cs 复制代码
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()

{ }

的确是解决了!:

相关推荐
酿情师5 小时前
yihan:一款面向连续网页学习的智能侧边栏插件
学习·学习方法·工具·学习工具
瞎某某Blinder6 小时前
DFT学习记录[6]基于 HES06的能带计算+有效质量计算
python·学习·程序人生·数据挖掘·云计算·学习方法
love在水一方7 小时前
VLN 入门学习计划 —— 基于 InternNav
学习
red_redemption10 小时前
自由学习记录(175)
学习
nashane11 小时前
HarmonyOS 6学习:画中画(PiP)状态同步与场景化实战指南
学习·pip·harmonyos·harmonyos 5
_李小白11 小时前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
勤劳的进取家11 小时前
数据链路层基础
网络·学习·算法
d111111111d11 小时前
直流电机位置式 PID 控制 和 舵机的区别
笔记·stm32·单片机·嵌入式硬件·学习
y = xⁿ13 小时前
Redis八股学习日记:布隆过滤器
数据库·redis·学习
d111111111d14 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习