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

浙公网安备 33010602011771号