美文网首页
一、文件与路径——4、配置文件读取总结

一、文件与路径——4、配置文件读取总结

作者: GameObjectLgy | 来源:发表于2021-06-20 15:50 被阅读0次
    不同平台下如何去读取配置文件

    1、针对不同平台,配置不同的路径
    2、配置文件放在不同文件夹有不同加载方式
    3、如果想配置文件可读可写,则用Application.persistentDataPath路径

    /*
     * 这里所有的数据都只是作为示例,使用时按需设计
     * 这里采用消息事件的方式告诉外界配置数据加载好了 
     * 注意:Addressables加载的配置文件不能放在StreamingAssets文件夹目录
     */
    
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.AddressableAssets;
    
    public struct string3
    {
        public string name;
    
        public string aduioPath;
        public string picPath;
    
        public string3(string _name, string _aduioPath, string _picPath)
        {
            name = _name;
            aduioPath = _aduioPath;
            picPath = "Assets" + _picPath;
        }
    }
    
    public class ConfigMgr : MonoSingleton<ConfigMgr>
    {
        public List<string3> colorNames;
        //同一颜色索引
        public Dictionary<string, List<string>> colorFoodList;
        public List<string> numAudios;
        public void InitConfigData()
        {
            colorNames = new List<string3>();
            colorFoodList = new Dictionary<string, List<string>>();
            numAudios = new List<string>();
            Debug.Log("开始加载配置数据");
            GetBaseDataFromFile();
        }
    
        async void GetBaseDataFromFile()
        {
            //说明这里可以框架里的Loader去加载的,但是因为用Addressables方式,加载代码比较少,这里就直接写了
            TextAsset content = await Addressables.LoadAssetAsync<TextAsset>("Assets/ConfigData.json").Task;
            JSONObject js = JSONObject.Create(content.text);
    
            JSONObject nowFiled;
            //颜色
            nowFiled = js.GetField("color");
            for (int i = 0; i < nowFiled.list.Count; i++)
            {
                string3 _str3 = new string3(nowFiled.list[i].GetField("name").str, nowFiled.list[i].GetField("audio").str, nowFiled.list[i].GetField("pic").str);
                colorNames.Add(_str3);
    
                colorFoodList.Add(_str3.name, new List<string>());
            }
            //数字
            nowFiled = js.GetField("nums");
            for (int i = 0; i < nowFiled.list.Count; i++)
            {
                numAudios.Add(nowFiled.list[i].str);
            }
    
    
            //如果这里还有配置文件需要加载,在这里调用
            //最后一个加载完的配置文件分发加载完事件消息
            SubMsgMgr.Single.DispatchMsg(MsgEvent.EVENT_ConfigInitDone);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:一、文件与路径——4、配置文件读取总结

          本文链接:https://www.haomeiwen.com/subject/qmvpbktx.html