unity使用INI配置文件

  1. 在Unity中引入Advanced INI Parser
  2. 把config.ini放到固定的目录下(Assets\StreamingAssets\config.ini)
  3. 创建一个对应的配置文件操作脚本ConfigInfo.cs
  4. 把ConfigInfo.cs挂载到一个空对象上,对象名随便起为ConfigInfo
  5. 在其它脚本,如MainScript.cs中,定义一个变量,如public ConfigInfo configInfo;,在Unity的Inspector窗口中,会出现一个参数;
  6. 把空对象ConfigInfo拖到Insprctor的Config Info后面的输入框中(表示使用ConfigInfo脚本的这个实例)
  7. 在MainScript.cs中使用这个变量configInfo即可,如Debug.Log(configInfo.appName)

 

配置文件config.ini

需要放到Assets\StreamingAssets\config.ini

[System]
软件名称=瀑布流播放器
软件版本=1.0.0.1001
版权声明=版权所有
退出密码=122333
开机自启=true
[Size]
软件宽度=1920
软件高度=1080
照片行数=8
照片间距=10
流动速度=25
流动方向=left
挤压半径=1200
同时操作=10
[交互]
允许拖拽=true
拖拽加速度=1

[[Test]]
x=
y=
z=5
var1=
var2=1
var3=true
var4=4
欢迎词=欢迎使用本系统
说明=配置文件写入测试

操作配置文件的脚本Config.cs

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

/// <summary>
/// 系统配置脚本,进行配置文件的读写
/// </summary>
public class ConfigInfo : MonoBehaviour
{
    [HideInInspector]
    public string iniPath = Application.streamingAssetsPath + "/config.ini";
    [HideInInspector]
    public string appName = "华远瀑布流播放器";//软件名称
    [HideInInspector]
    public string appVersion = "0.0.0.0";//软件版本
    [HideInInspector]
    public string copyright = "";//版权声明
    [HideInInspector]
    public string exitPass = "122333";//退出密码
    [HideInInspector]
    public bool bootStart = true;//开机自启

    public int appWidth;//软件宽度
    public int appHeight;//软件高度

    void Start()
    {
        ReadConfigFromIni();//从配置文件中读取配置
        WriteConfigToIni();//写配置文件
    }

    void Update()
    {
        
    }

    /// <summary>
    /// 从配置文件中读取配置
    /// </summary>
    private void ReadConfigFromIni()
    {
        CheckConfigFile();//检测配置文件是否存在

        INIParser iNIParser = new INIParser();
        iNIParser.Open(iniPath);

        appName = iNIParser.ReadValue("System", "软件名称", "华远瀑布流播放器");
        appVersion = iNIParser.ReadValue("System", "软件版本", "");
        copyright = iNIParser.ReadValue("System", "版权声明", "华远盛亚,版权所有");//string类型的
        exitPass = iNIParser.ReadValue("System", "退出密码", "122333");
        bootStart = iNIParser.ReadValue("System", "开机自启", false);//bool类型的
        appWidth = iNIParser.ReadValue("System", "软件宽度", 1920);
        appHeight = iNIParser.ReadValue("System", "软件高度", 1080);//int类型的

        iNIParser.Close();
    }

    /// <summary>
    /// 修改配置文件
    /// </summary>
    private void WriteConfigToIni()
    {
        CheckConfigFile();//检测配置文件是否存在

        INIParser iNIParser = new INIParser();

        //增加/修改
        iNIParser.Open(iniPath);
        iNIParser.WriteValue("[Test]", "说明", "配置文件写入测试");
        iNIParser.WriteValue("[Test]", "var1", "");
        iNIParser.WriteValue("[Test]", "var2", 1);
        iNIParser.WriteValue("[Test]", "var3", "true");
        iNIParser.WriteValue("[Test]", "var4", 4);
        iNIParser.WriteValue("[Test]", "欢迎词", "欢迎使用本系统");
        iNIParser.Close();
    }

    /// <summary>
    /// 从配置文件中删除配置项
    /// 示例:
    /// DelConfigFromIni("Test", "name")
    /// DelConfigFromIni("Test")
    /// </summary>
    private void DelConfigFromIni(String group, string item)
    {
        CheckConfigFile();//检测配置文件是否存在

        INIParser iNIParser = new INIParser();

        //删除
        iNIParser.Open(iniPath);
        iNIParser.KeyDelete(group, item);
        iNIParser.SectionDelete(group);
        iNIParser.Close();
    }

    /// <summary>
    /// 检测配置文件是否存在,不存在则抛出文件不存在的异常
    /// </summary>
    private void CheckConfigFile()
    {
        if (!File.Exists(iniPath))
        {
            throw (new FileNotFoundException(string.Format("配置文件 {0} 不存在", iniPath)));
        }
    }


}

  

  

 在另一个一中创建一个ConfigInfo类型的变量

public class PhotoWallCtrl : MonoBehaviour
{
    public ConfigInfo configInfo;//系统配置文件

    void Start()
    {
        Debug.Log(string.Format("PhotoWallCtrl.系统名称 = {0},版本号={1}", configInfo.appName, configInfo.appVersion));

    }
}

  在Unity编缉器中,创建一个空对象,并挂载脚本ConfigInfo

把空对象ConfigInfo拖到对应的参数

在其它脚本中,就可以直接使用ConfigInfo脚本

public class PhotoWallCtrl : MonoBehaviour
{
    public ConfigInfo configInfo;//系统配置文件

    void Start()
    {
        
        Debug.Log(string.Format("PhotoWallCtrl.系统名称 = {0},版本号={1}", configInfo.appName, configInfo.appVersion));

    }

}

  

 

posted @ 2023-07-25 10:39  牛大胆V5  阅读(759)  评论(0)    收藏  举报