Unity 处理策划的 Excel
很多时候我们需要使用策划的Excel表来做游戏的静态数据配置, 而不是采用自己定义的xml或者U3D的scriptobject。
因为很多数据都是策划处理的,而策划最喜欢的就是excel,也只会用这个。如果不用excel,意味着数据需要你自己输入,纯属浪费时间。
所以很多时间我们和策划约定好VO类的字段,直接从Excel映射出VO类。
比如下面的这张表

另存为.csv 然后转换为.txt 注意编码都改为UTF-8


做好配置文件后,VO类映射就可以了,举个例子:
Vo 类
public class HeroVo
{
public int heroId; public string heroName;///武将名称 //public int heroStar;///品质
public int bingZhongId;///职业 public string heroIcon;///icon(头像) public string heroFace;///face(形象) public string heroDescription;///描述 public float hp; public float grownHp; public float attack; public float grownAttack; public float defense; public float grownDefense; public float luckRate; /// 暴击率 public float missRate;///闪避 public int skill1_Id; public int skill2_Id; public HeroVo (Dictionary<string,string> paramters)
{
FieldInfo[] fields = this.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance); foreach (var item in paramters.Keys)
{
FieldInfo[] curfields = fields.Where(t => t.Name == item).ToArray(); if (curfields != null && curfields.Length == )
{
//Debug.Log("key:" + item + "value:" + paramters[item]); FieldInfo curField = curfields[]; if (curField.FieldType == typeof(int))
{
curField.SetValue(this, int.Parse(paramters[item]));
}
else if (curField.FieldType == typeof(string))
{
curField.SetValue(this, paramters[item]);
}
else if (curField.FieldType == typeof(float))
{
curField.SetValue(this, float.Parse(paramters[item]));
}
}
}
} public override string ToString()
{
StringBuilder builder = new StringBuilder(); FieldInfo[] fields = this.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance);
foreach (var item in fields)
{
builder.Append(" " + item.Name + " : " + item.GetValue(this) + " ");
} return builder.ToString();
}
}
Vo 类集合解析
public class StaticHeroDataPool
{
public static string ResourceDataPath = "battle/Data/Hero/StaticHeroDataModel"; public List<HeroVo> heros = new List<HeroVo>(); static StaticHeroDataPool _instatnce = null;
public static StaticHeroDataPool Instatnce
{
get
{
if (_instatnce == null)
{
_instatnce = new StaticHeroDataPool(); _instatnce.AddData(LoadData(ResourceDataPath));
}
return _instatnce;
}
} private static string[] LoadData(string loadUrl)
{
TextAsset binAsset = Resources.Load(loadUrl, typeof(TextAsset)) as TextAsset; string[] lineArray = binAsset.text.Split("\n"[]); /// 去掉最后一空行
int length = lineArray.Length;
string[] newlineArray = lineArray.Where((t, index) => (index < length - )).ToArray(); return newlineArray;
} private void AddData(string[] lineArray)
{
string[] fieldNames = lineArray[].Replace("\r", "").Split(";"[]); for (int i = ; i < lineArray.Length; i++)
{
string[] Values = lineArray[i].Replace("\r", "").Split(";"[]); Dictionary<string, string> paramters = new Dictionary<string, string>();
for (int j = ; j < fieldNames.Length; j++)
{
paramters.Add(fieldNames[j], Values[j]);
} HeroVo heroVo = new HeroVo(paramters);
heros.Add(heroVo);
}
}
}
Unity 处理策划的 Excel的更多相关文章
- Unity 读取CSV与Excel
前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取.我们可以想到的存储数据的载体有很多.例如:txt,xml,csv,excel. ...
- untiy 插件工具: 游戏中 策划数据Excel 导出到项目中
https://github.com/zhutaorun/Excel2Unity,这个项目是直接下载就可以用的, 其中原理和相关的解释 http://blog.csdn.net/neil3d/arti ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一)
引言 现在做游戏开发的没有几个不用Excel的,用的最多的就是策划.尤其是数值策划,Excel为用户提供强大的工具,各种快捷键,各种插件,各种函数.但是作为程序来说其实关注的不是Excel而是它最终形 ...
- Unity读Excel 输出PC端(Windows)后不能读取的问题
问题:在Unity中用ExcelDataReader读Excel时,在编辑器模式下可以正常读取,但是在导出PC端app后读Excel却会报空,Excel读取失败. 要点: 1.把库文件Excel.dl ...
- Unity 3D读取Excel表格、导入信息、导出Json
Unity 3D读取/导入Excel表格 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...
- Excel转Json,Json转CSharp
一份给策划最好的礼物!就是:Excel2Json2CSharp 策划配置Excel,动不动就要改数值啊,增加字段啊. 程序这边对应的解析类就得改动啊.整一个麻烦了得! 所以我就整理了这个Excel2J ...
- KEngine策划指南:配置表格的编辑与编译
策划与程序的桥梁 执行策划在游戏开发的过程中的主要工作是什么?当然就是和Excel打交道了.大量的Excel数据表,最终会被演变成游戏的配置数据.日常游戏开发中,策划编辑配置表一般有两种方式: 编译式 ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- c# 游戏策划配置工具
该工具是提供策划配置excel数据,导出到mysql数据库,以及生成xml文件,和对应的xml解析实体类 实现了程序 excel 列名 ID =P 表示ID这列是唯一字段 =S=300 表示这列类型是 ...
随机推荐
- [div+css布局]命名规则
//首页可能碰到的 页头:header登录条:loginBar标志:logo侧栏:sideBar广告:banner导航:nav子导航:subNav菜单:menu子菜单:subMenu搜索:search ...
- [笔记]--Sublime Text 2使用技巧
Sublime个人喜好设置: 在打开个人设置页面Preferences >> Settings - User,加入以下内容: { , //TAB键,4个空格 "translate ...
- C 关于二叉查找树的回顾,并简述结构接口设计
前言 最经想改写C用的配置读取接口, 准备采用hash或二叉树提到原先用的链表,提高查找效率.就回顾一下二叉树,这里分享一下二叉查找树,代码很精简的, 适合学习运用二叉树查找. 需要基础 1.具备C ...
- 算法系列7《CVN》
计算CVN时使用二个64位的验证密钥,KeyA和KeyB. 1) 计算CVN 的数据源包括: 主账号(PAN).卡失效期和服务代码,从左至右顺序编排. 4123456789012345+8701+11 ...
- Oracle Imp and Exp (导入和导出) 数据 工具使用
Oracle 提供两个工具imp.exe 和exp.exe分别用于导入和导出数据.这两个工具位于Oracle_home/bin目录下. 导入数据exp 1 将数据库ATSTestDB完全导出,用户名s ...
- c语言中通过指针将数值赋值到制定内存地址
1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100.我们怎么才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质 ...
- 在meteor中使用支付,以及与服务器进行数据交互
how to use Meteor.http.call? Meteor.http is only available on sever side http模块仅能用于server端. 1,add ht ...
- vnextcn
Flag 标题 通过 提交 AC% 难度 E1 编写Hello World网站 9 17 52% 1 E2 编写Hello World控制台程序 11 13 84% 1 E3 控制器基础练 ...
- Ubuntu系统安装配置Pintos和Bochs
Ubuntu系统安装配置 Pintos 和 Bochs 安装过程 首先是UEFI启动模式下Win8.1安装Ubuntu14.04双系统,由于篇幅过长,就不在这里详写.可见博主的另一篇博客http:// ...
- 双系统下利用MbrFix.exe卸载LINUX系统
前言: 不少同学笔记本都装的有双系统,一般都是LIUNX和WINDOWS的两个系统(由于以前对电脑各种无知)装了双系统,再次,小编就不在阐述双系统地各种不便,再次就强调一下,假若要卸载LINUX的话 ...