zoukankan      html  css  js  c++  java
  • Unity读取配置文件

    config.ini存放在Assets目录下,项目打包之后存放在Data目录下exe同目录

    // 从配置文件读取
            string configFile = Application.dataPath + "/config.ini";//打包好的“xxx_Data”目录貌似没有读取里面的文件权限
            //所以对于打包的程序,需要把配置文件config.ini放在exe同目录下
    #if !UNITY_EDITOR
        configFile = System.Environment.CurrentDirectory + "/config.ini";
    #endif
            if (File.Exists(configFile))
            {
                ConfigIni ini = new ConfigIni(configFile);
                //host = ini.ReadIniContent("DeepStreamServer", "host");
                //port = ini.ReadIniContent("DeepStreamServer", "port");
                host = ini.keyVal["host"];
                port = ini.keyVal["port"];
                //MessageBox(IntPtr.Zero, configFile+","+host+","+port, "从配置文件读取DeepStream的IP:Port", 0);
            }
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Runtime.InteropServices;
    using System.Text;
    using UnityEngine;
    
    /// <summary>
    /// 读取ini配置文件
    /// [Time] 
    /// time=10 
    /// [Speed] 
    /// speed=5 
    /// ConfigIni ini=new ConfigIni(Application.StreamingAssets+"/Setting.ini"); 
    /// time=ini.ReadIniContent("Time","time");
    /// speed=ini.ReadIniContent("Speed","speed");
    /// ini.WritePrivateProfileString("Count","count","5");
    /// </summary>
    public class ConfigIni {
    
        public string path;
        public Dictionary<string, string> keyVal = new Dictionary<string, string>();
    
        //ini文件的路径  
        public ConfigIni(string path)
        {
            this.path = path;
    
            StreamReader sr = new StreamReader(path, Encoding.Default);
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                if (line.Contains("="))
                {
                    string[] kv = line.Split('=');
                    string key = kv[0].Trim();
                    string v = kv[1].Trim();
                    keyVal.Add(key, v);
                }
            }
        }
    
        [DllImport("kernel32")]
        public static extern long WritePrivateProfileString(string section, string key, string value, string path);
        [DllImport("kernel32")]
        public static extern int GetPrivateProfileString(string section, string key, string deval, StringBuilder stringBuilder, int size, string path);
        [DllImport("User32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
        public static extern int MessageBox(IntPtr handle, String message, String title, int type);
    
        //写入ini文件
        public void WriteIniContent(string section, string key, string value)
        {
            WritePrivateProfileString(section, key, value, this.path);
        }
    
        //读取Ini文件
        public string ReadIniContent(string section, string key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(section, key, "", temp, 255, this.path);
            //MessageBox(IntPtr.Zero, this.path+i + ","+temp+","+section+key, "ReadIniContent", 0);
            return temp.ToString();
        }
        //判断路径是否正确
        public bool IsIniPath()
        {
            return File.Exists(this.path);
        }
    }

  • 相关阅读:
    mybatis多参数传递(包括数组)
    mysql查询树状目录所有子节点
    Kettle ETL调用 java代码来进行数据库的增删改查
    java dom4j解析器使用
    Linux查看系统位数
    Linux查看系统是32位还是64位命令(getconf WORD_BIT和getconf LONG_BIT)
    Centos7下Redis缓存清理_FZlion
    springboot+vue项目实战(代码可运行)
    SpringBoot控制台打印SQL语句
    Error running ‘Application‘: Command line is too long
  • 原文地址:https://www.cnblogs.com/coolbear/p/9262101.html
Copyright © 2011-2022 走看看