读表是做游戏很重要的一个环节,这里我用到的是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的读表,存档,读档相关推荐

  1. SaveLoad--Unity存档读档的学习总结

    存档与读档功能 举例: 传统RPG游戏(仙剑.空之轨迹): 1.角色信息(生命值,等级) 2.道具信息(装备,药品) 3.场景信息(场景名称.角色坐标) 4.事件信息(任务相关) 关卡类游戏:关卡的通 ...

  2. 正版七日杀服务器存档,七日杀网吧怎么存档 七日杀网吧存档读档方法介绍-游侠网...

    七日杀的电脑要求配置虽然不是特别高,但是相对于很多玩家的电脑来说还是一个不小的负担的,所以很多玩家会选择去网吧游玩,但是很多玩家发现网吧非主机玩家的人物数据重进总是清零.所以今天小编就为大家带来了便是 ...

  3. Unity_二进制,Jason,XML存档读档

    创建一个类Save 用来保存游戏的信息,以便于存档 Save.cs的代码 using System.Collections; using System.Collections.Generic; usi ...

  4. Python 名片管理系统(文件版,可存档读档)

    Python 名片管理系统(文件版,可存档读档) 相比于函数版的程序,文件版增加了存档读档操作 函数版的可以参考Python名片管理系统(列表.字典和函数的综合应用) 以下是新增部分的代码(不包括调用 ...

  5. Unity 数据读写与存档(1)——配置表初探

    1.1 与策划小伙伴协同工作 如果大家在使用Unity的游戏公司工作,或者对游戏公司的工作流程与技术有所知晓,相信一定会或多或少地听说过"配置表"这个东西. 什么是配置表呢?很简单 ...

  6. 单片机c语言NTC温度查表程序,STM32查表法读NTC值并显示温度

    STM32查表法读NTC值并显示温度 #include "stm32f10x.h"Y'+F0IZ+ #include "delay.h"pU'`9fLi_ #i ...

  7. HBase性能优化方法总结(4):读表操作

    来自:http://www.cnblogs.com/panfeng412/archive/2012/03/08/hbase-performance-tuning-section3.html 本文主要是 ...

  8. Lua 读表代码,自动生成字段名字

    表格格式为 INT STRING INT INT INT INT INT Id Desc Type SceneId OpenId MaxPliesp ClearancePlies 0 第1关 0 1 ...

  9. HBase性能优化方法总结(三):读表操作

    3. 读表操作 3.1 多HTable并发读 创建多个HTable客户端用于读操作,提高读数据的吞吐量,一个例子: static final Configuration conf = HBaseCon ...

  10. [导入]VB PE导出/输入表演示(读文件版)

    VB PE导出/输入表演示(读文件版) 文章来源:http://blog.csdn.net/chenhui530/archive/2007/12/31/2006109.aspx 转载于:https:/ ...

最新文章

  1. git revert和git reset的区别
  2. 详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)
  3. 【Groovy基础系列】 Groovy运算符
  4. 缓存穿透、缓存并发、热点缓存之最佳招式
  5. python输出日志到文件_【已解决】Python中,如何让多个py文件的logging输出到同一个日志log文件...
  6. kaggle中的Two-Stage比赛规则以及metadata数据的使用规定
  7. [翻译]用于.NET Core的Windows窗体设计器发布
  8. 动态规划基础水题提纲
  9. OpenCV中VideoCapture判断isOpened()时总是返回false
  10. c语言入门经典18个程序
  11. 收藏jquery兼容浏览器的ctrl+enter动作代码
  12. 浅谈Js对象的概念、创建、调用、删除、修改!
  13. 【BZOJ1226】学校食堂(动态规划,状态压缩)
  14. opencv3和opencv4多线程内存泄漏问题
  15. 重磅!颜宁宣布离美归国
  16. linux chrome 缓存,Linux设置chrome缓存至内存,及开关机同步
  17. 活动目录备份和灾难恢复之手动备份与非授权还原
  18. 百家讲坛 黄帝内经(第一部)
  19. jQuery siblings() 方法
  20. 计算机死机后 通过任务管理器关闭程序,电脑死机后,按哪个键结束程序

热门文章

  1. 国内智能手机市场寒风凛冽,华米OV谁更受伤?
  2. 文科如何晋级计算机职称,职称的档次是怎么确定来的?
  3. web3py earliest、latest、pending
  4. 亮度,对比度,饱和度,锐度对最终图像效果的影响
  5. DevOps工具图谱分析(一)
  6. Fits文件在天文方面的应用(数据处理部分)
  7. 服务器C盘内存不足,发现C盘TEMP文件夹占用44G
  8. easyui datagrid deleteRow删除行时异常,删除了其他行
  9. 计算机桌面黑屏有鼠标,win7系统启动黑屏只有显示鼠标指针怎么办(图文)
  10. Vivado综合running时间太长