Unity的读表,存档,读档
读表是做游戏很重要的一个环节,这里我用到的是Newtonsoft。
首先选择表格转换后的json,这里我用的是Exele2Json工具
这是转换后的json
[{"id": 10000,"name": "勇者","description": "憧憬着冒险的少年,拥有无限的潜力","job": 0,"ai": 1,"hp": "500",//测试是否会自动转换为int"act": 25,"treatment": 5,"def": 0.05,"spd": 2.5,"crit": 0,"miss": 0.05,"skill1": 30000,"skill2": 0,"skill3": 30127,"hp_up": 0,"act_up": 0,"def_up": 0,"spd_up": 0,"crit_up": 0,"hp_1": 2,"atk": 2,"def_1": 2,"spd_1": 2},{"id": 10001,"name": "战士","description": "提升了近战的能力,一切近战职业的基础","job": 1,"ai": 1,"hp": 1000,"act": 35,"treatment": 5,"def": 0.3,"spd": 2.5,"crit": 0.05,"miss": 0.05,"skill1": 30001,"skill2": 0,"skill3": 30128,"hp_up": 0,"act_up": 0,"def_up": 0,"spd_up": 0,"crit_up": 0,"hp_1": 3,"atk": 2,"def_1": 2,"spd_1": 2}
]
然后创建用于接收json的类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public enum CharacterJob
{None = 0,Warrior = 1, // 战士大类Hunter = 2, // 猎人大类Magician = 3, // 法师Priest = 4, // 牧师Robber = 5, // 盗贼
}[System.Serializable]
public class CharacterData
{public int id; // 编号public string name; // 名称public string description; // 描述public CharacterJob job; // 职业public int ai; // 调用aipublic int hp; // 血量public float act; // 攻击public float treatment; // 治疗系数public float def; // 防御public float spd; // 移动public float crit; // 暴击public float miss; // 闪避概率public int skill1; // 普通攻击public string skill2; // 技能攻击public List<int> active_skills = new List<int>(); // 主动技能列表public int skill3; // 被动技能public int hp_up; // 血量成长public float act_up; // 攻击成长public float def_up; // 防御成长public float spd_up; // 移动成长public float crit_up; // 暴击成长public int hp_1; // 数值1(表示1-5星)public int atk; // 数值2public int def_1; // 数值3public int spd_1; // 数值4
}
这里我故意留了个坑,勇者的HP传入的是string。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;public class TestManager : MonoBehaviour
{public TextAsset characterJson;//传进来的jsonDictionary<int, CharacterData> _characterDatas=new Dictionary<int, CharacterData>();//用于存储json的字典public static string ARCHIVE_KEY_V1;//存档数据转换为的stringUserData userData;//接收存档数据private void Start(){LoadCharacterData();}protected void LoadCharacterData()//读配置表{if (characterJson != null){JArray array = JArray.Parse(characterJson.text);//读取jsonList<CharacterData> datas = array.ToObject<List<CharacterData>>();//json转listforeach (CharacterData character in datas)//list转字典{string[] arr = character.skill2.Split(",");//把json中带,的部分拆成数组foreach (string skill in arr){int id = int.Parse(skill);//把数组中的string转intif (id > 0){character.active_skills.Add(id);//存储这个id}}_characterDatas.Add(character.id, character);//填充字典}}else{Debug.LogError("Character data undefined!!!");}}public void LoadArchiveData()//读档,把String转成Class然后读档{if (PlayerPrefs.HasKey(ARCHIVE_KEY_V1)){string str = PlayerPrefs.GetString(ARCHIVE_KEY_V1);userData = JsonConvert.DeserializeObject<UserData>(str);}}public void SaveGameData()//存档,把String转成Class然后读档{string jsonStr = JsonConvert.SerializeObject(userData);PlayerPrefs.SetString(ARCHIVE_KEY_V1, jsonStr);}}
public class UserData//存档数据
{public int Lv;public int Money;
}
这是读表,存档和读档的3个方法。用Newtonsoft读表后string自动转乘了接收类型里的int。没有报错。
Newtonsoft拖入unity工程文件即可
Exele2Json是个小程序。windows里打开即可
Unity的读表,存档,读档相关推荐
- SaveLoad--Unity存档读档的学习总结
存档与读档功能 举例: 传统RPG游戏(仙剑.空之轨迹): 1.角色信息(生命值,等级) 2.道具信息(装备,药品) 3.场景信息(场景名称.角色坐标) 4.事件信息(任务相关) 关卡类游戏:关卡的通 ...
- 正版七日杀服务器存档,七日杀网吧怎么存档 七日杀网吧存档读档方法介绍-游侠网...
七日杀的电脑要求配置虽然不是特别高,但是相对于很多玩家的电脑来说还是一个不小的负担的,所以很多玩家会选择去网吧游玩,但是很多玩家发现网吧非主机玩家的人物数据重进总是清零.所以今天小编就为大家带来了便是 ...
- Unity_二进制,Jason,XML存档读档
创建一个类Save 用来保存游戏的信息,以便于存档 Save.cs的代码 using System.Collections; using System.Collections.Generic; usi ...
- Python 名片管理系统(文件版,可存档读档)
Python 名片管理系统(文件版,可存档读档) 相比于函数版的程序,文件版增加了存档读档操作 函数版的可以参考Python名片管理系统(列表.字典和函数的综合应用) 以下是新增部分的代码(不包括调用 ...
- Unity 数据读写与存档(1)——配置表初探
1.1 与策划小伙伴协同工作 如果大家在使用Unity的游戏公司工作,或者对游戏公司的工作流程与技术有所知晓,相信一定会或多或少地听说过"配置表"这个东西. 什么是配置表呢?很简单 ...
- 单片机c语言NTC温度查表程序,STM32查表法读NTC值并显示温度
STM32查表法读NTC值并显示温度 #include "stm32f10x.h"Y'+F0IZ+ #include "delay.h"pU'`9fLi_ #i ...
- HBase性能优化方法总结(4):读表操作
来自:http://www.cnblogs.com/panfeng412/archive/2012/03/08/hbase-performance-tuning-section3.html 本文主要是 ...
- Lua 读表代码,自动生成字段名字
表格格式为 INT STRING INT INT INT INT INT Id Desc Type SceneId OpenId MaxPliesp ClearancePlies 0 第1关 0 1 ...
- HBase性能优化方法总结(三):读表操作
3. 读表操作 3.1 多HTable并发读 创建多个HTable客户端用于读操作,提高读数据的吞吐量,一个例子: static final Configuration conf = HBaseCon ...
- [导入]VB PE导出/输入表演示(读文件版)
VB PE导出/输入表演示(读文件版) 文章来源:http://blog.csdn.net/chenhui530/archive/2007/12/31/2006109.aspx 转载于:https:/ ...
最新文章
- git revert和git reset的区别
- 详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)
- 【Groovy基础系列】 Groovy运算符
- 缓存穿透、缓存并发、热点缓存之最佳招式
- python输出日志到文件_【已解决】Python中,如何让多个py文件的logging输出到同一个日志log文件...
- kaggle中的Two-Stage比赛规则以及metadata数据的使用规定
- [翻译]用于.NET Core的Windows窗体设计器发布
- 动态规划基础水题提纲
- OpenCV中VideoCapture判断isOpened()时总是返回false
- c语言入门经典18个程序
- 收藏jquery兼容浏览器的ctrl+enter动作代码
- 浅谈Js对象的概念、创建、调用、删除、修改!
- 【BZOJ1226】学校食堂(动态规划,状态压缩)
- opencv3和opencv4多线程内存泄漏问题
- 重磅!颜宁宣布离美归国
- linux chrome 缓存,Linux设置chrome缓存至内存,及开关机同步
- 活动目录备份和灾难恢复之手动备份与非授权还原
- 百家讲坛 黄帝内经(第一部)
- jQuery siblings() 方法
- 计算机死机后 通过任务管理器关闭程序,电脑死机后,按哪个键结束程序