很多时候我们需要使用策划的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的更多相关文章

  1. Unity 读取CSV与Excel

    前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取.我们可以想到的存储数据的载体有很多.例如:txt,xml,csv,excel. ...

  2. untiy 插件工具: 游戏中 策划数据Excel 导出到项目中

    https://github.com/zhutaorun/Excel2Unity,这个项目是直接下载就可以用的, 其中原理和相关的解释 http://blog.csdn.net/neil3d/arti ...

  3. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一)

    引言 现在做游戏开发的没有几个不用Excel的,用的最多的就是策划.尤其是数值策划,Excel为用户提供强大的工具,各种快捷键,各种插件,各种函数.但是作为程序来说其实关注的不是Excel而是它最终形 ...

  4. Unity读Excel 输出PC端(Windows)后不能读取的问题

    问题:在Unity中用ExcelDataReader读Excel时,在编辑器模式下可以正常读取,但是在导出PC端app后读Excel却会报空,Excel读取失败. 要点: 1.把库文件Excel.dl ...

  5. Unity 3D读取Excel表格、导入信息、导出Json

    Unity 3D读取/导入Excel表格 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...

  6. Excel转Json,Json转CSharp

    一份给策划最好的礼物!就是:Excel2Json2CSharp 策划配置Excel,动不动就要改数值啊,增加字段啊. 程序这边对应的解析类就得改动啊.整一个麻烦了得! 所以我就整理了这个Excel2J ...

  7. KEngine策划指南:配置表格的编辑与编译

    策划与程序的桥梁 执行策划在游戏开发的过程中的主要工作是什么?当然就是和Excel打交道了.大量的Excel数据表,最终会被演变成游戏的配置数据.日常游戏开发中,策划编辑配置表一般有两种方式: 编译式 ...

  8. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  9. c# 游戏策划配置工具

    该工具是提供策划配置excel数据,导出到mysql数据库,以及生成xml文件,和对应的xml解析实体类 实现了程序 excel 列名 ID =P 表示ID这列是唯一字段 =S=300 表示这列类型是 ...

随机推荐

  1. [div+css布局]命名规则

    //首页可能碰到的 页头:header登录条:loginBar标志:logo侧栏:sideBar广告:banner导航:nav子导航:subNav菜单:menu子菜单:subMenu搜索:search ...

  2. [笔记]--Sublime Text 2使用技巧

    Sublime个人喜好设置: 在打开个人设置页面Preferences >> Settings - User,加入以下内容: { , //TAB键,4个空格 "translate ...

  3. C 关于二叉查找树的回顾,并简述结构接口设计

    前言  最经想改写C用的配置读取接口, 准备采用hash或二叉树提到原先用的链表,提高查找效率.就回顾一下二叉树,这里分享一下二叉查找树,代码很精简的, 适合学习运用二叉树查找. 需要基础 1.具备C ...

  4. 算法系列7《CVN》

    计算CVN时使用二个64位的验证密钥,KeyA和KeyB. 1) 计算CVN 的数据源包括: 主账号(PAN).卡失效期和服务代码,从左至右顺序编排. 4123456789012345+8701+11 ...

  5. Oracle Imp and Exp (导入和导出) 数据 工具使用

    Oracle 提供两个工具imp.exe 和exp.exe分别用于导入和导出数据.这两个工具位于Oracle_home/bin目录下. 导入数据exp 1 将数据库ATSTestDB完全导出,用户名s ...

  6. c语言中通过指针将数值赋值到制定内存地址

    1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100.我们怎么才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质 ...

  7. 在meteor中使用支付,以及与服务器进行数据交互

    how to use Meteor.http.call? Meteor.http is only available on sever side http模块仅能用于server端. 1,add ht ...

  8. vnextcn

    Flag 标题 通过 提交 AC% 难度   E1 编写Hello World网站 9 17 52% 1   E2 编写Hello World控制台程序 11 13 84% 1   E3 控制器基础练 ...

  9. Ubuntu系统安装配置Pintos和Bochs

    Ubuntu系统安装配置 Pintos 和 Bochs 安装过程 首先是UEFI启动模式下Win8.1安装Ubuntu14.04双系统,由于篇幅过长,就不在这里详写.可见博主的另一篇博客http:// ...

  10. 双系统下利用MbrFix.exe卸载LINUX系统

    前言:  不少同学笔记本都装的有双系统,一般都是LIUNX和WINDOWS的两个系统(由于以前对电脑各种无知)装了双系统,再次,小编就不在阐述双系统地各种不便,再次就强调一下,假若要卸载LINUX的话 ...