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

的确是解决了!:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++知识点总结(23):高级模拟算法真题 ★★★☆☆《公交消费》

公交消费 一、审题 题目描述 小明是个天选打工人,每天都需要乘坐公交,每次乘坐公交需要消费 0.5 0.5 0.5 元,每天需要乘坐两次公交来回,现公交系统推出公交优惠消费活动,每消费 k k k 元,就可以获赠 1…

【贪心算法】452. 用最少数量的箭引爆气球

452. 用最少数量的箭引爆气球 射击气球的最小箭数 题目描述 给定一系列气球的位置,每个气球由一个开始和结束的坐标点表示。我们射箭时,箭可以在水平线上从左到右无限延伸。问射出的箭头最小数量是多少,才能保证所有的气球都被射中。 解题…

首发:鸿蒙面试真题分享【独此一份】

最早在23年华为秋季发布会中,就已经宣布了“纯血鸿蒙”。而目前鸿蒙处于星河版中,加速了各大互联网厂商的合作。目前已经有200参与鸿蒙的原生应用开发当中。对此各大招聘网站上的鸿蒙开发需求,每日都在增长中。 2024大厂面试真题 目前的鸿蒙…

使用Java生成JWT(JSON Web Token)的详细指南

介绍 在现代应用程序中,身份验证和授权是至关重要的。JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式用于在各方之间安全地传输信息。在本文中,我们将学习如何使…

驱动调试第013期-G120XA驱动同步电机应用案例

概述 SINAMICS G120XA是西门子SINAMICS系列变频器的新成员, 功率范围覆盖0.75 kW~560 kW,内置风机和水泵行业应用功能,汇集了优异的高性能矢量控制算法,可以轻松的驱动风机、水泵及压缩机等负载。胜任各种应用场合,专…

Postman 接口自动化测试教程:入门介绍和从 0 到 1 搭建 Postman 接口自动化测试项目

关于Postman接口自动化测试的导引,全面介绍入门基础和从零开始搭建项目的步骤。学习如何有效地使用Postman进行API测试,了解项目搭建的基础结构、环境设置和测试用例的编写。无论您是新手还是经验丰富的测试人员,这篇教程都将为您提供清晰的指…

pycuda安装失败问题

pycuda安装失败问题 遇到一个pycuda安装失败的问题, 这里有一个合理的解释可以去尝试一下,看起来很有道理:

MySQL为什么要用B+树?

二叉树(二叉查找树) 平衡二叉树(B树就是B-树)(解决了二叉查找树的极端情况) Q:具体是怎么解决的呢? A: 树左右两边层数相差不大于1一旦符合条件1的时候,就进行左旋/右…

linux设置nginx systemctl启动

生成nginx.pid文件 #验证nginx的配置,并生成nginx.pid文件 /usr/local/nginx/sbin/nginx -t #pid文件目录在 /usr/local/nginx/run/nginx.pid 设置systemctl启动nginx #添加之前需要先关闭启动状态的nginx,让nginx是未启动状态 #关闭nginx /usr/local…

计算机网络面经-TCP为什么可靠

先说结论: 确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。数据校验数据合理分片和排序:流量控制:当接收方来不及处理发送方的数据,能降低发送方的发送速度,防止…

无法更新下载安装升级谷歌浏览器Chrome无法更新至最新版本怎么解决下载更新谷歌浏览器?

谷歌Chrome浏览器有新版本chrome可用,点击后无法更新chrome至最新版本,造成每次在电脑上打开谷歌chrome浏览器都会提示更新,重新安装chrome又无法打开谷歌浏览器官方网站。 谷歌浏览器Chrome无法更新至最新版本怎么办? 1、百度搜…

System Verilog学习笔记(十八)——线程控制

线程控制 发生器把激励传给代理时,环境类需要知道发生器什么时候完成任务,以便及时终止测试平台中还在运行的线程,这个过程就需要借助线程间的通信来完成。常用的线程间通信有事件控制、wait语句、SV信箱和旗语等。 Verilog对语句有两种分组…

复试焦点 | 3000+篇档案学研究论文主题解析

数据来源 检索平台来源期刊年份有效数据中国知网档案学通讯档案学研究中国档案浙江档案北京档案档案管理档案与建设2022-20233329篇主题聚类大揭秘 借助CiteSpace的关键词聚类功能,我们根据上述数据集绘出如下图谱网络(图1),其中生成了12个有效聚类,为了让聚类结果更加能…

Numpy 数组转换为 Pandas DataFrame

参考:Convert Numpy Array to Pandas DataFrame Numpy 介绍 Numpy是Python中一个非常强大的科学计算库,它提供了许多高效的数组操作方法。Pandas是另一个重要的数据处理库,它基于Numpy,并提供了更高级别的数据分析和处理工具。在…

SMT贴片加工——品质检验要求

一、元器件贴装工艺品质要求 1.元器件贴装需整齐、正中,无偏移、歪斜 2.贴装的元器件型号规格应正确;元器件应无漏贴、错贴 3.贴片元器件不允许有反贴 4.有极性要求的贴片器件安装需按正确的极性标示安装 二、元器件焊锡工艺要求 1.FPC板面应无影响…

Mybatis-Plus——05,乐观锁(新注解)

乐观锁(新注解) 一、数据库添加一个字段二、实体类添加version注解三、注册乐观锁插件四、测试一下4.1成功的乐观锁4.2失败的乐观锁————————创作不易,笔记不易,如觉不错,请三连,谢谢~~ 乐观锁实现方…

蓝桥杯C++日期统计(暴力模拟)

问题描述: 小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4…

TREC 2023 Deep Learning Track Guidelines

先看看TREC是什么 TREC 是 Text REtrieval Conference(文本检索会议)的缩写。它是一个由美国国家标准技术研究所(NIST)主办的年度会议,旨在推动信息检索领域的研究和发展。TREC 于 1992 年开始举办,是一个…

[LeetCode][8]【学习日记】实现字符串转换整数 (atoi)函数

题目 8. 字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格检查下一个字…

nginx代理minio客户端

错误方式 在点击桶名查看文件时, 会一直处于loading加载中 worker_processes 1; #设置 Nginx 启动的工作进程数为 1。events {worker_connections 1024; ##设置每个工作进程的最大并发连接数为 1024。 }http {include mime.types; #该文件定义了文件扩展名和 MIME 类型…