unity3d C#之配置文件的加载
来源:互联网 发布:传奇3数据库修改无效 编辑:程序博客网 时间:2024/05/17 07:04
一,放置配置文件位置一般放在 StreamingAssets下面
我的TowManager.TxT文件里面写的是
[Tow_Crystal]
#attack=10
#attackDistance=15
#attackInterval=1.5
#weaponName=Test
[Tow_Gatling]
#attack=15
#attackDistance=10
#attackInterval=4
#weaponName=Test
[Tow_Cannon]
#attack=20
#attackDistance=8
#attackInterval=1
#weaponName=Test
具体代码
using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;public class Config : MonoBehaviour{ //把towDic字典中的内容读取到项目中 // 主键 子键 子值 public static Dictionary<string, Dictionary<string, string>> towDic = new Dictionary<string, Dictionary<string, string>>(); //按照Dictionary的写法一步一步的写// Use this for initialization public string path = "TowManager.txt";//配置文件要放在Awake里面,因为要在项目运行中要保证数据要先有 void Awake() { //把新建的配置文件 TowManager.txt文件放到StreamingAssets目录下,之后用Combine合并路径 path = Path.Combine(Application.streamingAssetsPath, path); //用于读取配置信息到数组里面 string[] items = File.ReadAllLines(path); //主键 string mainKey = null; //子键 string subKey = null; //子值 string subValue = null; foreach (var item in items) { //判断读取到的行是否为空 if (!string.IsNullOrEmpty(item)) { item.Trim(); //如果该字符开始是"[" if (item.StartsWith("[")) { //去除不用的字符将其作为字典的主键 mainKey = item.Substring(1, item.Length - 2).Trim(); towDic.Add(mainKey, new Dictionary<string, string>()); print("主键为:" + mainKey); //如果开始的符号是# } //如果该字符串是以“#”开始 if (item.StartsWith("#")) { //用=号分割 去除不用的符号 分别赋值给子键和子值 string[] main = item.Split('='); subKey = (main[0].Substring(1, main[0].Length-1)).Trim(); subValue = main[1].Trim(); //给主键添加子建和子值 towDic[mainKey].Add(subKey, subValue); print("子键为:" + subKey + " 子值为:" + subValue); } } } //测试输出是否正确 print(towDic["Tow_Crystal"]["attack"]); }}
读取配置文件
实例:给你的游戏物体配置相关的值
public abstract class TowState : MonoBehaviour { //攻击力 // [HideInInspector] public float attack; //攻击距离 // [HideInInspector] public float attackDistance; //攻击间隔 public float attackInterval; public void Start() { //主键 //由于我创建的游戏物体是 Instantiate()实例化出来的因此在获取 主键 要去掉 (Clone)这几个字符(transform.parent.parent.name.Length-7),才能保证主键的一致 //注意:在游戏场景中不能有这个物体,不然由于场景中的 游戏物体的名称 就是字典中的主键,会报 主键错误(没有匹配到) string MainKey=transform.parent.parent.name.Substring(0,transform.parent.parent.name.Length-7); //通过测试 通过剪切游戏名来判断是否与主键一致 print(MainKey); //获得通过子建的key,获取相应的子值--其中(GameMessager.Instance是一个单例) //由于通过字典得到的值是String类型的,转换为float类型 attack=float.Parse(GameMessager.instance.configFile[MainKey]["attack"]); attackDistance = float.Parse(GameMessager.instance.configFile[MainKey]["attackDistance"]); attackInterval = float.Parse(GameMessager.instance.configFile[MainKey]["attackInterval"]); attackTypechange = GameMessager.instance.configFile[MainKey]["attackType"]; }}
阅读全文
0 0
- unity3d C#之配置文件的加载
- Unity3D热更新之C#反射加载程序集
- Unity3D学习之(进度条的加载)
- Unity3d之异步加载的研究
- Unity3D Android的配置文件
- 浅谈Unity3D教程之Unity3D中的C#事件的应用
- Unity3d动态加载及生成配置文件
- 【转】unity3d动态加载及生成配置文件
- Unity3D-动态读取配置文件,加载游戏对象
- java之配置文件加载
- Akka之配置文件加载
- unity3d之 C# WaitFOrSeconds()
- Unity3d-C#之where
- Unity3d-C#之where
- unity3d之 C# WaitFOrSeconds()
- unity3d c# 之事件
- Unity3D配置文件的相关操作
- Unity3D——Android开发之资源的加载
- Java基础知识之——平台与内存管理
- 【批量清空表】“CONCAT”“TRUNCATE”与“information_schema”的使用
- 知识点
- Tomcat下面部署Geoserver的跨域访问问题
- js字符串和对象转换
- unity3d C#之配置文件的加载
- c++中string的用法
- 水仙花数
- kubernetes安装总结
- python里使用正则表达式的非捕获模式
- android studio布局突然显示不全解决方案
- 大数据术语
- @Component注解
- Java的IO流--FileInputStream和FileOutputStream