配置文件

配置文件

1.TXT

示例

using System.IO;
using UnityEngine;

public class Juse : MonoBehaviour
{
    public string configPath;
    public string[] configContent;
    private void Start()
    {
        configPath = Path.Combine(Application.streamingAssetsPath, "config.txt");
        if (File.Exists(configPath)) 
        {
            configContent = File.ReadAllLines(configPath);
        }
        foreach(string content in configContent)
        {
            Debug.Log(content);
        }
    }
}

        将Txt文件放入工程的StreamingAssets文件夹中,即可读取。

2.CSV

 示例

using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class Juse : MonoBehaviour
{
    public List<Student> students = new List<Student>();
    void Start()
    {
        //文件位置
        string filePath = Application.streamingAssetsPath + "/csvtest.csv";
        //判断目录是否存在
        if (!Directory.Exists(Application.streamingAssetsPath))
        {
            //创建目录
            Directory.CreateDirectory(Application.streamingAssetsPath);
        }
        StreamWriter sw = new StreamWriter(filePath);
        //向列表中写入数据
        Student student1 = new Student(2, "xiaohua");
        Student student2 = new Student(3, "xiaohong");
        students.Add(student1);
        students.Add(student2);
        //向文件中写入数据
        for (int i = 0; i < students.Count; i++)
        {
            sw.WriteLine(students[i].id.ToString(), students[i].name);
        }
        //推送到流文件
        sw.Flush();
        //关闭文件
        sw.Close();

        StreamReader sr = new StreamReader(filePath);
        //读取文件数据
        string str;
        while ((str = sr.ReadLine()) != null)
        {
            Debug.Log(str);
        }
        //关闭文件
        sr.Close();
    }
}
[System.Serializable]
public class Student
{
    public int id;
    public string name;
    public Student(int id, string name)
    {
        this.id = id;
        this.name = name;
    }
}

3.Xml

示例

using System;
using System.Collections.Generic;
using System.Xml;
using UnityEngine;

public class Juse : MonoBehaviour
{
    private List<Skill> skillList = new List<Skill>();
    private void Start()
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Application.streamingAssetsPath+"/Skill.xml");
        XmlNode root =xmlDoc.ChildNodes[1];
        foreach (XmlNode nodes in root)
        {
            Skill skill = new Skill();
            foreach(XmlNode node in nodes)
            {
                if(node.Name == "id")
                {
                    skill.id = Int32.Parse(node.InnerText);
                }
                if (node.Name == "name") 
                { 
                    skill.name = node.InnerText;
                    skill.lang = node.Attributes[0].Value;
                }
                if(node.Name == "damage") 
                {
                    skill.damage = Int32.Parse(node.InnerText);
                }
            }
            skillList.Add(skill);
        }
        foreach(Skill skill in skillList)
        {
            Debug.Log(skill.id+skill.name+skill.lang+skill.damage);
        }
    }
}
class Skill
{
    public int id;
    public string name;
    public string lang;
    public int damage;
}

        将xml文件放入工程的StreamingAssets文件夹中,用类来存,并读取。

4.Json

4.1用JsonUtility方法

        新建两个Button来分别控制json的生成和读取。

using System.Collections.Generic;
using UnityEngine;
using System;
using System.IO;

//要存储为json的对象
[Serializable]
public class DayRangeMessage
{
    public string date_time;//存储当天的日期
    public List<int> rangelist; //一天之内每次运行程序生成的随机数列表
}
public class JsonTest : MonoBehaviour
{
    string JsonPath; //json文件的路径
    DayRangeMessage dayrangeMessage;//要存起来的对象
    DayRangeMessage dayrangeMessagetemp;//要读取出来的对象
    void Start()
    {
        JsonPath = Application.streamingAssetsPath + "/JsonTest.json";
        InitJsonData();
    }
    //json 数据初始化
    void InitJsonData()
    {
        //生成一个DayRangeMessage对象
        dayrangeMessage = new DayRangeMessage();
        //给DayRangeMessage对象的第一个属性date_time赋值
        dayrangeMessage.date_time = "2019年8月14号";
        //给DayRangeMessage对象的第二个属性rangelist赋值
        //第二个个属性里添加有三个子元素
        dayrangeMessage.rangelist = new List<int>();
        dayrangeMessage.rangelist.Add(10);
        dayrangeMessage.rangelist.Add(22);
        dayrangeMessage.rangelist.Add(33);
    }
    //把上面初始化的数据进行保存
    public void SaveJson()
    {
        //如果本地没有对应的json 文件,重新创建
        if (!File.Exists(JsonPath))
        {
            File.Create(JsonPath).Dispose();//不加.Dispose第二次运行会报错
        }
        string json = JsonUtility.ToJson(dayrangeMessage, true);
        File.WriteAllText(JsonPath, json);
        Debug.Log("保存成功");
    }
    //从本地读取json数据
    public void ReadJson()
    {
        if (!File.Exists(JsonPath))
        {
            Debug.LogError("读取的文件不存在!");
            return;
        }
        string json = File.ReadAllText(JsonPath);
        dayrangeMessagetemp = JsonUtility.FromJson<DayRangeMessage>(json);
        //读取第一个属性:日期
        string date = dayrangeMessagetemp.date_time;
        Debug.Log(date);
        //获取第二个属性:
        for (int j = 0; j < dayrangeMessagetemp.rangelist.Count; j++)
        {
            Debug.Log(dayrangeMessagetemp.rangelist[j]);
        }
    }
}

4.2用LitJson方法

        LitJson方法需要在Plugins插件中放入LitJson.dll文件,若无法引入,命名空间需要在VS中添加引用。

        新建两个Button来分别控制json的生成和读取。

using LitJson;
using System.IO;
using UnityEngine;

public class Hero
{
    public string name;
    public int level;
    public int attack;
    public Hero() { }// 这个要有,不然JsonMapper.ToObject<T>(jsonStr) 会报错
    public Hero(string name, int level, int attack)
    {
        this.name = name;
        this.level = level;
        this.attack = attack;
    }
}
public class JsonTest : MonoBehaviour
{
    Hero one;
    string jsonPath;
    void Start()
    {
        jsonPath = Application.streamingAssetsPath + "/JsonTest.json";
        one = new Hero("SuperMan", 20, 345);
    }
    //把上面初始化的数据进行保存
    public void SaveJson()
    {
        //如果本地没有对应的json 文件,重新创建
        if (!File.Exists(jsonPath))
        {
            File.Create(jsonPath).Dispose();//不加.Dispose第二次运行会报错
        }
        string jsonStr = JsonMapper.ToJson(one);
        File.WriteAllText(jsonPath, jsonStr);
        Debug.Log("保存成功");
    }
    //从本地读取json数据
    public void ReadJson()
    {
        if (!File.Exists(jsonPath))
        {
            Debug.LogError("读取的文件不存在!");
            return;
        }
        string json = File.ReadAllText(jsonPath);
        Hero jsonToObject = JsonMapper.ToObject<Hero>(json);
        Debug.Log(jsonToObject.name);
    }
}

5.Excel

        需要在plugins中导入EPPlus.dll文件。

using System.IO;
using UnityEngine;
using OfficeOpenXml;

public class Juse : MonoBehaviour
{
    string ExcelPath;
    void Start()
    {
        //string connectionStr="Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + jsonPath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
        //OleDbConnection oleConnection = new OleDbConnection(connectionStr);
        ExcelPath = Application.streamingAssetsPath + "/ExcelRead.xlsx";
        FileInfo fileInfo = new FileInfo(ExcelPath);
        using (ExcelPackage excelPackage = new ExcelPackage(fileInfo))
        {
            ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets[1];//读取Excel中的第一张表格
            string s = worksheet.Cells[3, 3].Value.ToString();//读取第一行、第三列的数据
            Debug.Log(s);

            worksheet.Cells[5, 3].Value = "des";//在第五行第三列写入数据
            excelPackage.Save();//存储数据
        }
    }
}

  

 

posted @ 2023-03-15 13:58  gatran  阅读(12)  评论(0编辑  收藏  举报