Unity C# CSV文件解析与加载(已更新移动端处理方式)
在游戏开发过程中,经常要用到Excel编辑各类数据,如果可以直接用Excel支持的文件格式来读取数据,修改将非常便捷。
Excel支持导出CSV类型的文件,这类文件不仅可以用Excel直接打开修改,即便用记事本打开也非常容易阅读,解析起来也很简单。
下面给出CSV文件的解析类:
using UnityEngine;
using System.IO;
using System.Text; public class CSV { static CSV csv;
public static CSV GetIns()
{
if (csv == null)
csv = new CSV();
return csv;
} //利用二维数组存储对应行和列中的字符串
public string[][] m_ArrayData; public void LoadFile(string path,string fileName)
{
//读取新文件前保证之前的数据为空
m_ArrayData = new string[][];
string fillPath = path + "/" + fileName; //解析每一行的数据
string[] lineArray;
try
{
//注意编码方式,这里用的是Windows系统自定义的编码方式Encoding.Default,其实也就是GB2312(简体中文),编码不对应的话解析出来很可能是乱码
lineArray = File.ReadAllLines(fillPath, Encoding.Default);
Debug.Log("file finded!");
}
catch
{
Debug.Log("file do not find!");
return;
} m_ArrayData = new string[lineArray.Length][];
for (int i = ; i < lineArray.Length; i++)
{
//CSV格式的文件采用英文逗号作为分隔符
m_ArrayData[i] = lineArray[i].Split(',');
}
} //外部调用的取值接口,需要先LoadFile()后才能返回正确的数据
public string GetVaule(int row,int col)
{
return m_ArrayData[row][col];
}
2019.09.18日更新:
1.上面的代码在Windows平台下运行是没问题的,后来发现在安卓端就会出现乱码问题;查阅资料后发现移动端一般不支持Window平台默认的GB2312(简体中文)编码方式。
解决办法就是将文本修改为utf-8的编码,统一采用utf-8来解析文本,无论在Window还是移动端,utf-8都是支持的。
文本的修改方式是直接用记事本打开csv文件,选择另存为,在编码那一栏修改为带BOM的UTF-8,注意一定要带BOM,不然Excel没办法正确读取,保存类型为所有文件:
然后将上面代码的解析方式也改为utf-8即可:
lineArray = File.ReadAllLines(fillPath, Encoding.GetEncoding("utf-8"));
2.在安卓端直接用File类读取配置文件是有问题的,因为即使把CSV文件放到StreamingAssets中也是没办法直接读到的,必须要用Unity提供的WWW类(或者新版的UnityWebRequest)流式读取才行。
好在Application.persistentDataPath的地址无论在哪个平台上都能够得到正确的地址,而且在移动端是可读可写的,这一点非常重要。因此,可以采取这样的操作:
先用WWW类(或者新版的UnityWebRequest)将StreamingAssets文件夹下的CSV文件读取出来,然后再重新写到Application.persistentDataPath中去,之后就可以轻松用File类在Application.persistentDataPath地址下去读取CSV了。
这样的话也不用再考虑平台的差异性了:
IEnumerator LoadCSV(string fileName,UnityAction CompleteAction)
{
string sPath = Application.streamingAssetsPath + "/" + fileName;
Debug.Log("sPath:" + sPath);
WWW www = new WWW(sPath);
while (!www.isDone)
{
yield return null;
}
Debug.Log("content2:" + www.text);
File.WriteAllText(Application.persistentDataPath + "/" + fileName, www.text, Encoding.GetEncoding("utf-8"));
CSV.GetIns().LoadFile(Application.persistentDataPath, fileName);
CompleteAction();
}
Unity C# CSV文件解析与加载(已更新移动端处理方式)的更多相关文章
- 基于FBX SDK的FBX模型解析与加载 -(一)
http://blog.csdn.net/bugrunner/article/details/7210511 1. 简介 FBX是Autodesk的一个用于跨平台的免费三维数据交换的格式(最早不是由A ...
- Unity开发实战探讨-资源的加载释放最佳策略简要心得
Unity开发实战探讨-资源的加载释放最佳策略简要心得 看过我另外一篇关于Unity资源释放随笔<Unity开发实战探讨-资源的加载释放最佳策略>如果觉得略微复杂,那么下面是一些比较简要的 ...
- Mybatis源码解析(二) —— 加载 Configuration
Mybatis源码解析(二) -- 加载 Configuration 正如上文所看到的 Configuration 对象保存了所有Mybatis的配置信息,也就是说mybatis-config. ...
- vue第七单元(vue的单文件组件形式-单文件组件的加载原理-vue-cli构建的开发环境以及生命周期)
第七单元(vue的单文件组件形式-单文件组件的加载原理-vue-cli构建的开发环境以及生命周期) #课程目标 掌握安装 vue-cli 命令行工具的方法,掌握使用命令行在本地搭建开发环境,使用命令行 ...
- 如何使用 require.js ,实现js文件的异步加载,避免网页失去响应,管理模块之间的依赖性,便于代码的编写和维护。
一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...
- profile文件的错误加载与基本命令间的映射
一.绪论 [因为这篇心得是原创的,所以如果有哪处总结或者意见不足的地方,欢迎各位大神的批评和意见,共同学习,谢谢了!] 早些时候,需要在centos6.4系统中配置单机版和集群版单节点的hadoop ...
- 本地修改配置hosts文件解决Github加载慢问题
本地修改配置hosts文件解决Github加载慢问题 手动方式 hosts 文件在每个系统的位置不一,详情如下: Windows 系统:C:\Windows\System32\drivers\etc\ ...
- iOS --- UIWebView的加载本地数据的三种方式
UIWebView是IOS内置的浏览器,可以浏览网页,打开文档 html/htm pdf docx txt等格式的文件. safari浏览器就是通过UIWebView做的. 服务器将MIM ...
- Jquery 在页面加载后执行的几种方式
1.$(function(){ $("#a").click(function(){ //adding your code here }); }); 2.$(document) ...
随机推荐
- 知识图谱如何运用于RecomSys
将知识图谱作为辅助信息引入到推荐系统中可以有效地解决传统推荐系统存在的稀疏性和冷启动问题,近几年有很多研究人员在做相关的工作.目前,将知识图谱特征学习应用到推荐系统中主要通过三种方式——依次学习.联合 ...
- tomcat9上传文件失败错误
项目上线正常运行一段时间后,有一天突然所有的附件上传都出现了错误,查找项目本身的日志系统也一致没有跟踪到错误.经过几番折腾,在tomcat9-stdout.log日志中发现如下异常: ERROR or ...
- Java报错:java.math.BigDecimal cannot be cast to java.lang.String
从数据库取数字,转为string,报错: java.math.BigDecimal cannot be cast to java.lang.String 错误代码 Integer.parseInt(( ...
- [IDA]修改变量类型、删除变量名
1. 双击变量 2. 按D转换类型(Word.Byte.Dword) 3. 按U删除变量名 4. 按N修改变量名
- SEH hook 的一种方法
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 技术学习来源:火哥(QQ:471194425) 该方法的一些原理暂 ...
- 安装Goland开发工具
安装Goland开发工具 开发工具: 文本类的编辑器:记事本,notepad,sublime text,atom... 通过命令执行程序 IED:集成开发环境(integrated develop ...
- .NET MVC5简介(三)Result
Ajax请求数据响应格式,一个醒目组必须是同意的,前端才知道怎么应付,还有很多其他情况,比如异常了,有ExceptionFilter,按照固定格式返回,比如没有权限,Authorization,按照固 ...
- Python爬取猫眼电影《飞驰人生》47858万条评论并对其进行数据分析
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Yura不说数据说 ,PYuraL PS:如有需要Python学习资 ...
- python数据可视化简介(一)
目录 一:配置jupyter notebook 二:Matplotlib图像实例 数据可视化是用图形或者表格的形式进行数据显示,用图形化的手段,清晰有效地传递与沟通信息.既要保证直观易分析,又要保 ...
- Linux(ubuntu) 三行代码搞定安装谷歌浏览器
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 然后再输入: sudo dpkg -i g ...