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

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. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-12 02:28:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-12 02:28:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-12 02:28:03       82 阅读
  4. Python语言-面向对象

    2024-03-12 02:28:03       91 阅读

热门阅读

  1. 基于chatgpt的聊天机器人

    2024-03-12 02:28:03       39 阅读
  2. vue - - - - - i18n$t()无法获取数组、对象

    2024-03-12 02:28:03       42 阅读
  3. LeetCode面试题 08.14. Boolean Evaluation LCCI——区间dp

    2024-03-12 02:28:03       40 阅读
  4. Leetcode Algo Day3

    2024-03-12 02:28:03       36 阅读
  5. 2024年度邮件安全报告:恶意邮件增加了105%

    2024-03-12 02:28:03       50 阅读
  6. LeetCode70 爬楼梯

    2024-03-12 02:28:03       47 阅读
  7. LeetCode101 对称二叉树

    2024-03-12 02:28:03       35 阅读
  8. 域控定位解析

    2024-03-12 02:28:03       51 阅读
  9. 力扣题库第5题:盛最多水的容器

    2024-03-12 02:28:03       40 阅读