CSV文件处理
来源:互联网 发布:php lvs 编辑:程序博客网 时间:2024/06/07 19:25
脚本一CreateCSV用于创建CSV文件,:
using UnityEngine;using System.Collections;using System.Collections.Generic;using System.Text;public class CreatCsv { private string csvName; public string CsvName { get { return csvName; } set { csvName = value; } } private string csvContent; public string CsvContent { get { return csvContent; } set { csvContent = value; } } private string strContent; private int nRowCount; private int nColCount; public CreatCsv() { } public CreatCsv(CSVClassFiles placeName) { this.csvName = placeName.configName; this.csvContent = placeName.content; CSVManager.Init.AddCsv(this.csvName, this); } public virtual void Init() { } public virtual void Clear() { } public bool ChackCSV() { strContent = CsvContent; string[] strTitle = strContent.Split('\n'); string[] strTemp = strTitle[0].Split(','); for(int i = 0; i < strTemp.Length ; i++) { for(int j = i+1 ; j < strTemp.Length ; j++) { if(strTemp[i] == strTemp[j]) { Debug.LogWarning(csvName + "表头有重复"); return false; } } } nColCount = strTemp.Length; return true; } public bool AnalyzeCSV() { string[] strTitle = strContent.Split('\n'); for (int i = 0; i < strTitle.Length - 1; i++) { List<string> list = new List<string>(); string[] strTemp = strTitle[i].Split(','); for (int j = 0; j < strTemp.Length; j++) { string str = strTemp[j]; if (str.Contains("\r")) { str = str.Replace("\r", ""); } list.Add(str); } if(i >= 3) { dic[i-3] = list; } csvList.Add(list); } return true; } public int GetIntData(int nRow , int nClo) { if ((nRow + 1) > csvList.Count || (nClo + 1) > csvList[nRow].Count) { return 0; } int value; if (int.TryParse(csvList[nRow][nClo] , out value)) { return value; } return 0; } public int GetRowCount() { return csvList.Count; } public int GetColCount() { if (GetRowCount() > 0) { return csvList[0].Count; } return 0; } public string GetStringData(int nRow, int nClo) { if ((nRow + 1) > csvList.Count || (nClo + 1) > csvList[nRow].Count) { return null; } return csvList[nRow][nClo]; } public string GetTitle(int nClo) { return GetStringData(0, nClo); } public List<string> GetList(int nRow) { if (dic.ContainsKey(nRow)) { return dic[nRow]; } return null; } public List<List<string>> csvList = new List<List<string>>(); public Dictionary<int, List<string>> dic = new Dictionary<int, List<string>>();}
脚本二不必介绍:
using UnityEngine;using System.Collections;public class CSVClassFiles : ScriptableObject{ public string configName; public string content;}
脚本三CsvManager用于管理csv文件:
using UnityEngine;using System.Collections;using System.Collections.Generic;using System.Linq;using System;using DAS;public class CSVManager : Singleton{ public delegate void CreatCSVCallBack(int csvCount); public delegate void CreatCSVDone(); public CreatCSVDone CreatCSVDoneCallBack; public static CSVManager Init; private Dictionary<string, CreatCsv> dic = new Dictionary<string, CreatCsv>(); private int csvCount = 0; public CSVManager():base(false) { } public override void SingletonUpdate(float fTime, float fDtime) { } public void RegisterCreatCSVDone(CreatCSVDone callback) { CreatCSVDoneCallBack += callback; } public void RemoveCreatCSVDone(CreatCSVDone callback) { CreatCSVDoneCallBack -= callback; } public void AddCsv(string str , CreatCsv csv) { dic[str] = csv; } public T GetCSV<T>(string str) { if (dic.ContainsKey(str)) { object obj = (object)dic[str]; return (T)obj; } return default(T); } public void LoadCSV() { LoadManager.AddDownRequest(ResourceType.Type_CSV, GlobleConfig.strFlieSer + GlobleConfig.allCSVPath, CreadCSV, LoadProCallBack, GlobleConfig.allCSVPath); LoadManager.AddDownRequest(ResourceType.Type_CSV, GlobleConfig.strFlieSer + GlobleConfig.allScenesInfoPath, CreadCSV, LoadProCallBack, GlobleConfig.allScenesInfoPath); } private void LoadProCallBack(float value, object customParam) { Debug.LogWarning("LoadPro = " + value + " url = " + (string)customParam); } private void CreadCSV(AssetBundle bundle, object customParam) { if (bundle != null) { UnityEngine.Object[] objs = bundle.LoadAll(typeof(CSVClassFiles)); for (int num = 0; num < objs.Length; num++) { UnityEngine.Object obj = objs[num]; if (obj == null) { continue; } CSVClassFiles csv = obj as CSVClassFiles; if (csv.configName.Contains("cfg_Scene_")) { SceneMgr sceneMgr = (SceneMgr)SingletonMgr.Inst.GetSingleton(SingletonDefine.s_SceneMgr); ScenesCSV scenesCSV = new ScenesCSV(csv); sceneMgr.AddSceneCSV(csv.configName, scenesCSV); } if (csv.configName == GlobleConfig.csvEquipStone) { new EquipStoneCSV(csv); } else if (csv.configName == GlobleConfig.csvPlayerConfig1) { } else if (csv.configName == GlobleConfig.csvConfig) { } else if (csv.configName == GlobleConfig.csvOpenFun) { new OpenFunCSV(csv); } else if (csv.configName == GlobleConfig.csvDeviceInfo) { new DeviceInfoCSV(csv); } } bundle.Unload(false); if (customParam != null) { //Debug.LogWarning("customParam = " + customParam); if (customParam == "Config/AllCSVInfo.unity3d") { } } csvCount++; if (csvCount == 2) { CreatCSVDoneCallBack(); } } }}
脚本4下载:
using UnityEngine;using System.Collections;using System;using System.Collections.Generic;using DAS;public class LoadManager : Singleton{ public static LoadManager Init = null; public delegate void DownFinishDelegate(AssetBundle wwwObj, object customParam); public delegate void DownLoadProgressDelegate(float value, object customParam); private static Dictionary<string, AssetBundle> dic = new Dictionary<string, AssetBundle>(); private static Dictionary<string, WWWRequest> m_WWWMap = new Dictionary<string, WWWRequest>(); public LoadManager():base(false) { } public class WWWRequest { public ResourceType type; public string requestURl; public DownFinishDelegate calbackFun; public DownLoadProgressDelegate LoadProCallBack; public WWW wwwObject = null; public bool bHasDeal = false; public int loadSize; public List<object> customParams = new List<object>(); public WWWRequest() { } public WWWRequest(ResourceType resType ,string url, DownFinishDelegate cbFun,DownLoadProgressDelegate LoadPro, object customParam = null) { type = resType; requestURl = url; calbackFun = new DownFinishDelegate(cbFun); LoadProCallBack = new DownLoadProgressDelegate(LoadPro); try { wwwObject = new WWW(url); } catch(Exception ex) { Debug.LogWarning(ex.Message); } customParams.Add(customParam); } } //WWW Request List public static void AddDownRequest(ResourceType type , string url, DownFinishDelegate callBackFun, DownLoadProgressDelegate LoadPro = null, object customParam = null) { if (url != "") { //增加新的资源下载需求 if (!m_WWWMap.ContainsKey(url)) { m_WWWMap.Add(url, new WWWRequest(type ,url, callBackFun, LoadPro, customParam)); } else { //已经提交相同请求,但是没有下载完成 if (!m_WWWMap[url].wwwObject.isDone) { m_WWWMap[url].calbackFun += callBackFun; m_WWWMap[url].customParams.Add(customParam); } //已下载资源,直接调用回调函数 else { callBackFun(m_WWWMap[url].wwwObject.assetBundle, customParam); } } } } public static void UnloadAllRes() { foreach (KeyValuePair<string, WWWRequest> wwwPair in m_WWWMap) { wwwPair.Value.wwwObject.assetBundle.Unload(true); } m_WWWMap.Clear(); Resources.UnloadUnusedAssets(); System.GC.Collect(); } public static void UnloadSingleRes(string resName) { foreach (KeyValuePair<string, WWWRequest> wwwPair in m_WWWMap) { if (wwwPair.Key.Contains(resName)) { wwwPair.Value.wwwObject.assetBundle.Unload(true); m_WWWMap.Remove(resName); Resources.UnloadUnusedAssets(); break; } } } // Update is called once per frame public override void SingletonUpdate(float fTime, float fDtime) { foreach (KeyValuePair<string, WWWRequest> wwwPair in m_WWWMap) { WWWRequest wwwReq = wwwPair.Value; //try //{ // if (wwwReq.wwwObject == null || wwwReq.wwwObject.assetBundle == null) // { // continue; // } //} //catch (Exception ex) //{ // Debug.LogWarning(ex.Message); //} //如果尚未调用回调,并且下载完成,则调用 if ((!wwwPair.Value.bHasDeal && wwwReq.wwwObject.isDone && wwwReq.wwwObject.assetBundle != null)) { for (int i = 0; i < wwwReq.calbackFun.GetInvocationList().GetLength(0); i++) { ((DownFinishDelegate)wwwReq.calbackFun.GetInvocationList()[i]).Invoke(wwwReq.wwwObject.assetBundle, wwwReq.customParams[i]); wwwReq.wwwObject.assetBundle.Unload(false); //wwwReq.wwwObject.Dispose(); } wwwPair.Value.bHasDeal = true; } //if (!wwwReq.wwwObject.isDone) //{ // for (int i = 0; i < wwwReq.calbackFun.GetInvocationList().GetLength(0); i++) // { // ((DownLoadProgressDelegate)wwwReq.LoadProCallBack.GetInvocationList()[i]).Invoke(wwwReq.wwwObject.progress, wwwReq.requestURl); // } //} } }}
阅读全文
0 0
- Python 处理CSV文件
- python处理文件(.csv)
- Python 处理CSV文件
- 处理csv文件
- Python 处理CSV文件
- python处理.csv文件
- java处理csv文件
- CSV 文件处理 PERL
- php 处理csv文件
- csv文件处理
- CSV文件处理
- CSV文件处理
- Python--CSV文件处理
- Java处理csv文件
- python处理csv文件
- Java处理Excel,csv文件
- CSV文件的转义处理
- Python CSV文件处理/读写
- unity 别踩白块儿
- 如何清除网络共享文件夹的记忆帐号和密码
- 【Shader】角色受击闪白效果
- zeroc ice documents is not a valid short file name 解决
- Maven-常用依赖
- CSV文件处理
- 浅谈多个社交账号的登录注册设计
- 【JavaSE学习笔记】计算机基础知识
- Zynq-Linux移植学习笔记之十-u-boot网络配置
- Python图结构--邻接矩阵
- oracle 数据泵导入导出
- linux下/dev/null与/dev/zero
- 蓝桥杯 BEGIN-2 入门训练 序列求和
- SGD求解器的学习率a和遗忘因子u的设置原则