目录
效果展示


实现效果
1.在表格中配置人物的属性,更直观且方便
2.将Excel导出成Json格式的文件,导入Unity中反序列化,使得数据读取非常快
3.自动根据表格生成对应的C#类
4.枚举型变量Path在表格中显示为对应的汉字而不是数字,便于阅读
操作步骤
1.下载Excel2Json工具
工具下载地址:excel2json | 游戏程序员的自我修养 (neil3d.github.io)
2.配置表格
第一行为字段名称
第二行为类型,注意大小写,此处会影响生成的C#代码的类型
第三行为注释,其余的为数据
左下角的表格名称为生成的C#的类名
注:Path我设计为一个enum类型,在表格中以整数值存储,但以字符串进行显示,实现方法在文章底部
3.生成Json文件和C#代码
打开excel2json.exe文件,将表格拖拽上去,右侧可预览生成的json文件
ExportType为导出的类型,默认为数组,修改为Dict Object可以导出为以第一个字段为Key的字典
点击C#标签,可以查看生成的C#代码
SaveJson可以导出Json文件
4.Unity中反序列化
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
public class DataManager: MonoBehaviour
{
void Start()
{
//string json = File.ReadAllText("Assets/Resources/Data/test.json");
string json = Resources.Load<TextAsset>("Data/test").text;
Dictionary<string,CharacterInfo> infos=JsonConvert.DeserializeObject<Dictionary<string, CharacterInfo>>(json);
}
}
public class CharacterInfo
{
public string CharacterName; // 角色名称
public float HP; // 最大生命
public int Attack; // 攻击力
public string Description; // 角色描述
public Path Path; // 命途
}
public enum Path
{
Preservation,
TheHunt,
Destruction,
Nihility
}
1.将生成的代码复制过去,枚举类型需要自己定义
2.使用Path.ReadAllText或者Resources.Load<TextAsset>读取Json文件
3.使用JsonConvert.DeserializeObject反序列化为对象,需要using Newtonsoft.Json;
自定义Excel真实值与显示值的关系
选中需要的单元格,条件格式->管理规则->新建规则
选择只为包含以下内容的单元格设置格式,设置为单元格值,等于,具体值,点击格式
选择自定义,在类型中输入显示的值,点击确定
在管理中即可看到,应用于为使用此规则的单元格范围,当增加行时自动扩展
格式仅影响excel中的显示值,不影响实际值
如果这个小技巧帮到了你,请点个赞支持一下~