Unity3D游戏开发之“txt配档文件的读取”

来源:互联网 发布:口罩行业数据 编辑:程序博客网 时间:2024/05/21 11:27
转自:http://www.manew.com/thread-48555-1-1.html


在游戏开发中,我们经常会用到txt配档来存储游戏的配置或者数据!
在我开发的RPG游戏中主要用到的配档格式有2类,txt和xml格式。


注:txt文档必须用Excel打开并编辑,按照行列进行数据的配档的填写。
下面给出我使用的读取txt配档的使用类:


[C#] 纯文本查看 复制代码
using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Web;



/// <summary>

/// Summary description for TxtCfg

/// </summary>

public class TxtCfg

{

    private static TxtCfg instance;

    public static TxtCfg Instance {

        get{

            if (instance == null)

                instance = new TxtCfg();

            return instance;

        }

    }



    List<string[]> lineArray = new List<string[]>();

    public int GetLineCount()

    {

        return lineArray.Count;

    }

    public string[] GetLine(int index)

    {

        return lineArray[index];

    }



    public TxtCfg LoadFile(string filePath, char[] splitChar = null)

    {

        try

        {

            if (splitChar == null)

                splitChar = new char[] { '\t', ' ' };



            TxtCfg txtCfg = new TxtCfg();

            StreamReader sr = new StreamReader(filePath, Encoding.GetEncoding("gb2312"));

            string lineString = sr.ReadLine();

            while (lineString != null)

            {

                if (lineString.Trim().Length > 0 && lineString.Contains("//") == false)

                {

                    txtCfg.lineArray.Add(lineString.Split(splitChar, StringSplitOptions.RemoveEmptyEntries));

                }

                lineString = sr.ReadLine();

            }

            sr.Close();

            return txtCfg;

        }

        catch (System.Exception ex)

        {

            Console.WriteLine("打开配置文件失败:{0}\n原因:{1}", filePath, ex.Message);

        }

        return null;

    }



    public List<string> GetNameList(string filePath)

    {

        filePath = filePath.Replace('\\', '/');

        string currPath = "./";

        int pathEnd = filePath.LastIndexOf('/');

        if (pathEnd != -1)

            currPath = filePath.Substring(0, pathEnd + 1);

        TxtCfg resCfg = LoadFile(filePath);

        if (resCfg == null)

            return null;



        List<string> nameList = new List<string>();

        int count = resCfg.GetLineCount();

        try

        {

            for (int i = 0; i < count; i++)

            {

                string[] subItemStrings = resCfg.GetLine(i);

                nameList.Add(subItemStrings[0]);

            }

            return nameList;

        }

        catch

        {

            return null;

        }

    }

}

0 0
原创粉丝点击