unity中解析excel导出的txt文件

来源:互联网 发布:手机淘宝如何评价 编辑:程序博客网 时间:2024/05/22 06:24
<h2><pre name="code" class="csharp"><span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">Excel_Base基类</span>

using UnityEngine;using System.Collections;public abstract class Excel_Base<T> where T : class , new(){    private static T mInstance;    public static T Instance    {        get        {            if (mInstance == null)            {                mInstance = new T();            }            return mInstance;        }    }    private char[] SplitCharacters = { '\n', '\r', '\t', '=' };    protected string[] ReadExcelRow(string excelRow)    {        string[] results = excelRow.Split(SplitCharacters, System.StringSplitOptions.RemoveEmptyEntries);        return results;    }    protected string[] ReadExcelLine(string fileTxt)    {        string[] results = fileTxt.Split(new char[] { '\n', '\r' }, System.StringSplitOptions.RemoveEmptyEntries);        return results;    }    public abstract void LoadData(string fileTxt);}

数据类WeaponItem

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;/// <summary>/// 武器/// </summary>[Serializable]public class WeaponItem{    public WeaponItem(int id)    {        _id = id;    }    public int _id;    public string remark;//备注    public WeaponType type;//武器类型    public int level;//等级    public int nextLevel;//下一等级    public string bullet;//子弹    public string effect;//开火特效    public string launcher;//发射器    public string crossHair;//准心    public string fireSound;//开火声音    public float hurtRate;//伤害频率    public int hurt;//伤害    public int continuedTime;//激光:持续时间;导弹:发射间隔    public int missileCount;//导弹数量    public float attackDis;//攻击距离    public float x;//颤屏x    public float y;//颤屏y    public float z;//颤屏z    public int speed;//颤屏速度    public float shakeRate;//颤屏频率    public string gradeSound;//升级音效    public string attackEffect;//击中特效    public string attackSound;//击中音效}

读取数据

public class Excel_Weapon : Excel_Base<Excel_Weapon>{   public override void LoadData(string fileText)    {        string[] results = ReadExcelLine(fileText);        int nLen = results.Length;        for (int i = 1; i < nLen; i++)        {            string[] datas = ReadExcelRow(results[i]);            if (datas.Length == 0)            {                continue;            }            int start = 0;            int iContentID = Convert.ToInt32(datas[start]);            if (iContentID == -1)            {                continue;            }            WeaponItem item = new WeaponItem(iContentID);            start++;            item.remark = datas[start].ToString();            start++;            item.type = (WeaponType)Convert.ToInt32(datas[start].ToString());            start++;            item.level = Convert.ToInt32(datas[start].ToString());            start++;            item.nextLevel = Convert.ToInt32(datas[start].ToString());            start++;            item.bullet = datas[start].ToString();            start++;            item.effect = datas[start].ToString();            start++;            item.launcher = datas[start].ToString();            start++;            item.crossHair = datas[start].ToString();            start++;            item.fireSound = datas[start].ToString();            start++;            item.hurtRate = Convert.ToSingle(datas[start].ToString());            start++;            item.hurt = Convert.ToInt32(datas[start].ToString());            start++;            item.continuedTime = Convert.ToInt32(datas[start].ToString());            start++;            item.missileCount = Convert.ToInt32(datas[start].ToString());            start++;            item.attackDis = Convert.ToSingle(datas[start].ToString());            start++;            item.x = Convert.ToSingle(datas[start].ToString());            start++;            item.y = Convert.ToSingle(datas[start].ToString());            start++;            item.z = Convert.ToSingle(datas[start].ToString());            start++;            item.speed = Convert.ToInt32(datas[start].ToString());            start++;            item.shakeRate = Convert.ToSingle(datas[start].ToString());            start++;            item.gradeSound = datas[start].ToString();            start++;            item.attackEffect = datas[start].ToString();            start++;            item.attackSound = datas[start].ToString();            //Debug.Log("item._id:" + item._id + "bullet:" + item.bullet + " item.missileCount:" + item.missileCount + " item.continuedTime:" + item.continuedTime);            GlobalConfig._WeaponData.AddItem(item);        }    }}

只要在合适的时机调用LoadData()方法即可
0 0
原创粉丝点击