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()

{ }

的确是解决了!:

相关推荐
世人万千丶1 小时前
参数管理_Flutter在鸿蒙平台路由参数最佳实践
学习·flutter·华为·harmonyos·鸿蒙
遇乐的果园4 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园5 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
从零开始的代码生活_6 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
可乐奶茶sky6 小时前
AI Agent 学习
人工智能·学习
茯苓gao7 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
RD_daoyi8 小时前
外链权重暴跌至13%,品牌提及反超传统链接——2026年不做Digital PR,你的独立站等于隐形
运维·网络·学习·机器学习·搜索引擎
chase。9 小时前
【学习笔记】PointWorld:迈向通用机器人操控的3D世界模型
笔记·学习·机器人
AOwhisky9 小时前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
前端世界10 小时前
MySQL 基础入门(学习第4天)——约束与 DML 操作详解
数据库·学习·mysql