unity学习(51)——服务器三次注册限制以及数据库化角色信息6--完结

同一账号只写第一次,不同账号第一次爆炸 ,就因为下面部分得到逻辑有问题

修改后的代码如下:1.成功完成角色注册信息的数据库化记录。2.每个账号上限3个角色。3.角色是可以重名的,但是角色的id不会重名。

internal class UserCache
{private ConcurrentDictionary<string, List<string>> userPlayerIds = dataUserPlayerIds();//private ConcurrentDictionary<string, List<string>> userPlayerIds = new ConcurrentDictionary<string, List<string>>();//private ConcurrentDictionary<string, PlayerModel> players = new ConcurrentDictionary<string, PlayerModel>();private ConcurrentDictionary<string, PlayerModel> players = dataPlayers();//所有账号的角色信息,虽然角色信息中不包含账号idpublic static ConcurrentDictionary<string, List<string>> dataUserPlayerIds()//这样好像就行了{StreamReader file = new StreamReader("userPlayerIds.txt");string all = file.ReadToEnd();file.Close();ConcurrentDictionary<string, List<string>> results = new ConcurrentDictionary<string, List<string>>();try{//ConcurrentDictionary<string, List<string>> results = JsonConvert.DeserializeObject<ConcurrentDictionary<string, List<string>>>(JsonConvert.DeserializeObject(all).ToString());results = JsonConvert.DeserializeObject<ConcurrentDictionary<string, List<string>>>(JsonConvert.DeserializeObject(all).ToString());}catch {Console.WriteLine("dataUserPlayerIds()中出现问题");}return results;//return JsonConvert.DeserializeObject(all);}public static ConcurrentDictionary<string, PlayerModel> dataPlayers()//这样好像就行了{StreamReader file = new StreamReader("players.txt");string all = file.ReadToEnd();file.Close();ConcurrentDictionary<string, PlayerModel> results = new ConcurrentDictionary<string, PlayerModel>();try{results = JsonConvert.DeserializeObject<ConcurrentDictionary<string, PlayerModel>>(JsonConvert.DeserializeObject(all).ToString());}catch {Console.WriteLine("dataPlayers()中出现问题");}return results;//return JsonConvert.DeserializeObject(all);}public void put(string accId, PlayerModel model)//逻辑刚开始有些小问题,问题不大{bool ur = false;if (this.userPlayerIds.ContainsKey(accId))//这里出了问题了,同在一个put函数中{List<string> stringList;List<string> stringList_out;this.userPlayerIds.TryGetValue(accId, out stringList);//得到已有的角色id(player)stringList.Add(model.id);//给账号新加一个角色//如果已存账号信息--//重复的键,TryAdd是家不进去的ur = this.userPlayerIds.TryRemove(accId, out stringList_out);ur = this.userPlayerIds.TryAdd(accId, stringList);//同名 键 应该是可以覆盖的--不是第一次先用字符串修改值,再增加到对应键值对中}else{//重来没有,自然不会重复ur = this.userPlayerIds.TryAdd(accId, new List<string>() { model.id });//第一次只加1个}if (ur)//这次应该没问题了{StreamWriter file = new StreamWriter("userPlayerIds.txt");string json = JsonConvert.SerializeObject(this.userPlayerIds);Console.WriteLine("userPlayerIds.TryAdd:" + json);file.Write(json);file.Close();}bool pr=this.players.TryAdd(model.id, model);//最后真正怎加角色信息 player=角色 account=账号//将角色详细信息写入文件if (pr){StreamWriter file = new StreamWriter("players.txt");string json = JsonConvert.SerializeObject(this.players);Console.WriteLine("players.TryAdd:" + json);file.Write(json);  file.Close();}}

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

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

相关文章

酷克数据荣获粤港澳大湾区金融创新成果“特优解决方案”奖

近日&#xff0c;“第二届金融创新优秀应用案例与解决方案技术成果评定”正式揭晓&#xff0c;酷克数据提交的“HashData云原生金融信创数据仓库”入选特优解决方案&#xff0c;成为数据治理与数据平台类目中唯一的厂商方案。 本次评定历时5个多月&#xff0c;共257个项目参与申…

为什么TikTok视频0播放?账号权重提高要重视

许多TikTok账号运营者都会遇到一个难题&#xff0c;那就是视频要么播放量很低&#xff0c;要么0播放&#xff01;不管内容做的多好&#xff0c;最好都是竹篮打水一场空&#xff01;其实你可能忽略了一个问题&#xff0c;那就是账号权重。下面好好跟大家讲讲这个东西&#xff01…

《拓跋氏后裔的诅咒》——献给奋斗中的女性

近日&#xff0c;一部描绘北方农村女性成长与觉醒的长篇小说《拓跋氏后裔的诅咒》引起了广泛关注。这部作品由北京儿童医院的医生张鹏飞历时四年精心创作&#xff0c;由作家出版社出版。小说通过一个具有代表性的北方农村女性的视角&#xff0c;展现了现代社会中女性地位的提升…

直播相机,AI纪元!云犀首款AI直播相机重磅发布!

3月7日晚&#xff0c;云犀重磅发布首款AI直播相机-云犀智瞳Pro&#xff01;据悉该相机内置了云犀首款AI直播调参大模型&#xff0c;能够通过AI分析智能调节直播间参数&#xff0c;赋予直播间画面AI智能调控能力。 云犀AI直播相机&#xff0c;让直播更简单 此次云犀AI直播相机的…

Mysql 学习(十五)redo 日志

redo 日志 什么是redo日志&#xff1f;在说这个之前我们先来想一个场景&#xff0c;在访问磁盘的页面之前&#xff0c;我们会先把页面缓存到Buffer Pool之后&#xff0c;才会访问。写页面的时候也会先将buffer pool中的页面修改之后&#xff0c;然后在某个时机才会刷新到磁盘中…

Linux基础IO【 详 解 】

文章目录 C语言文件IOC语言文件接口汇总默认打开的三个流 系统文件IOopenclosewriteread 文件描述符fd文件描述符的分配规则重定向重定向的本质dup2 FILEFILE当中的文件描述符FILE当中的缓冲区 理解文件系统初识inode磁盘分区与格式化介绍 软硬链接软链接硬链接软硬链接的区别 …

国家妇女节放假是法定的假日

在这个充满活力和希望的春天&#xff0c;我们迎来了一个特殊的节日——国家妇女节。这是一个属于所有女性的节日&#xff0c;是一个庆祝女性成就、关爱女性权益的时刻。在这个特殊的日子里&#xff0c;我们不禁要问&#xff1a;国家妇女节放假是法定假日吗&#xff1f;让我们一…

从新能源汽车行业自动驾驶技术去看AI的发展未来趋势

自动驾驶汽车关键技术主要包括环境感知、精准定位、决策与规划、控制与执行、高精地图与车联网V2X以及自动驾驶汽车测试与验证技术等。 &#x1f413; 自动驾驶技术 这是AI在汽车行业中应用最广泛的领域之一。自动驾驶技术利用AI算法和传感器来感知环境、识别障碍物&#xff0c…

vue 使用element plus 菜单时,折叠文字不消失

问题&#xff1a; 菜单折叠时&#xff0c;title文本无法消失&#xff0c;同时下拉箭头还会存在 解决方法&#xff1a; 查看项目中是否有div标签 原因 div和p标签都是块级元素&#xff0c;可能是这个原因 所以把项目中的p标签改为span标签 div改为template即可解决

免费实时天气预报api接口

5分钟更新一次,包含基本天气信息、24小时逐小时天气、实时气象预警列表、湿度、能见度、气压、日出日落、9大生活指数、pm2.5、pm10、o3、no2、so2、是否需要带口罩、外出适宜、开窗适宜、是否需要打开净化器等,可按地名、城市编号、IP查询。 新增:优化预警字段, 返回实时预…

一 windso10 笔记本刷linux cent os7.9系统

1:准备材料 16G以上U盘, 笔记本一台 镜像选了阿里云镜像:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 软件:链接&#xff1a;https://pan.baidu.com/s/13WDp2bBU1Pdx4gRDfmBetg 提取码&#xff1a;09s3 2:把镜像写入U盘,本人已经写入好了,选择镜像,点开始就是,确定等…

Redis冲冲冲——Redis分布式锁如何实现

目录 引出Redis分布式锁如何实现Redis入门1.Redis是什么&#xff1f;2.Redis里面存Java对象 Redis进阶1.雪崩/ 击穿 / 穿透2.Redis高可用-主从哨兵3.持久化RDB和AOF4.Redis未授权访问漏洞5.Redis里面安装BloomFilte Redis的应用1.验证码2.Redis高并发抢购3.缓存预热用户注册验证…