txt配置文件 unity3d - CSDN
  • unity3d C#之配置文件的加载

    千次阅读 2017-11-06 16:38:42
    一,放置配置文件位置一般放在 StreamingAssets下面 我的TowManager.TxT文件里面写的是 [Tow_Crystal] #attack=10 #attackDistance=15 #attackInterval=1.5 #weaponName=Test [Tow_Gatling] #attack=15 #...

    一,放置配置文件位置一般放在  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"]; 
        }
    }



    注意:如有错误,请查看你创建的角色名是否和配置文件中的角色名一致,查看你的角色名通过剪切后是否和字典中相应的主键一致,其他就没有问题了,





    展开全文
  • Unity如何读写Txt文档

    千次阅读 2019-03-21 20:53:08
    filenames = Application.dataPath + @"\StreamingAssets\配置文件.txt" 多媒体项目中经常遇到需要加载配置文件的,这里我们使用readAllLines方法 public string ReadALine(string FileName, int linenumber) //...
      filenames = Application.dataPath + @"\StreamingAssets\配置文件.txt"

    多媒体项目中经常遇到需要加载配置文件的,这里我们使用readAllLines方法

      public  string ReadALine(string FileName, int linenumber) // 参数1:打开的文件(路径+文件命),参数2:读取的行数
        {
           
    
            string[] strs = File.ReadAllLines(FileName);//将filename路径的txt读取为string数组
            
            if (linenumber == 0)
            {
                return "0";
            }
            else
            {
                return strs[linenumber - 1];
            }
        }
    
        写入txt的方法   File.WriteAllLines (数组,路径)

     

    展开全文
  • 在游戏开发中,我们经常会用到txt配档来存储游戏的配置或者数据! 在我开发的RPG游戏中主要用到的配档格式有2类,txt和xml格式。 注:txt文档必须用Excel打开并编辑,按照行列进行数据的配档...
    转自:http://www.manew.com/thread-48555-1-1.html


    在游戏开发中,我们经常会用到txt配档来存储游戏的配置或者数据!
    在我开发的RPG游戏中主要用到的配档格式有2类,txt和xml格式。


    注:txt文档必须用Excel打开并编辑,按照行列进行数据的配档的填写。
    下面给出我使用的读取txt配档的使用类:


    [C#] 纯文本查看 复制代码
    using System;

    using System.Collections.Generic;

    using System.IO;

    using System.Linq;

    using System.Text;

    using System.Web;



    /// <summary>

    /// Summary description for TxtCfg

    /// </summary>

    public class TxtCfg

    {

        private static TxtCfg instance;

        public static TxtCfg Instance {

            get{

                if (instance == null)

                    instance = new TxtCfg();

                return instance;

            }

        }



        List<string[]> lineArray = new List<string[]>();

        public int GetLineCount()

        {

            return lineArray.Count;

        }

        public string[] GetLine(int index)

        {

            return lineArray[index];

        }



        public TxtCfg LoadFile(string filePath, char[] splitChar = null)

        {

            try

            {

                if (splitChar == null)

                    splitChar = new char[] { '\t', ' ' };



                TxtCfg txtCfg = new TxtCfg();

                StreamReader sr = new StreamReader(filePath, Encoding.GetEncoding("gb2312"));

                string lineString = sr.ReadLine();

                while (lineString != null)

                {

                    if (lineString.Trim().Length > 0 && lineString.Contains("//") == false)

                    {

                        txtCfg.lineArray.Add(lineString.Split(splitChar, StringSplitOptions.RemoveEmptyEntries));

                    }

                    lineString = sr.ReadLine();

                }

                sr.Close();

                return txtCfg;

            }

            catch (System.Exception ex)

            {

                Console.WriteLine("打开配置文件失败:{0}\n原因:{1}", filePath, ex.Message);

            }

            return null;

        }



        public List<string> GetNameList(string filePath)

        {

            filePath = filePath.Replace('\\', '/');

            string currPath = "./";

            int pathEnd = filePath.LastIndexOf('/');

            if (pathEnd != -1)

                currPath = filePath.Substring(0, pathEnd + 1);

            TxtCfg resCfg = LoadFile(filePath);

            if (resCfg == null)

                return null;



            List<string> nameList = new List<string>();

            int count = resCfg.GetLineCount();

            try

            {

                for (int i = 0; i < count; i++)

                {

                    string[] subItemStrings = resCfg.GetLine(i);

                    nameList.Add(subItemStrings[0]);

                }

                return nameList;

            }

            catch

            {

                return null;

            }

        }

    }

    展开全文
  • Unity3D自定义资源配置文件

    千次阅读 2019-04-11 11:13:50
    本文另外介绍一个Unity配置文件(.asset) 该配置文件的优点: 当我们需要将游戏资源里的贴图(Texture)、游戏对象(Gameobject)等预设体保存到配置文件时,这时我们就可以使用该配置文件 但是当关联...

    配置资源文件估计大家了解很多,比如XML、JSON、Protobuf、Excel、TXT等等

    在开发过程中,将游戏数据序列化到配置文件中,项目运行时读取配置文件中的数据

    本文另外介绍一个Unity的配置文件(.asset)

    该配置文件的优点:

    当我们需要将游戏资源里的贴图(Texture)、游戏对象(Gameobject)等预设体保存到配置文件时,这时我们就可以使用该配置文件

    但是当关联的预设体丢失时,需要重新将预设体关联起来

    接下来,我写了一个Demo,介绍在Unity3D创建自定义配置资源文件点击打开链接

    【管理类】

    创建一个管理类,提供函数来创建和读取配置文件(.asset)

    在这里我已经简单的封装好了,大家下载来后直接使用即可

     

    using UnityEngine;
    using System.Collections;
    using System.IO;
    using UnityEditor;
    
    public class CustomConfigManager<T> where T : ScriptableObject//对泛型参数进行约束,使其只能是ScriptableObject的派生类
    {
    
        private static CustomConfigManager<T> _instance;
    
        public static CustomConfigManager<T> GetInstance
        {
            get
            {
                if(_instance==null)
                {
                    _instance=new CustomConfigManager<T>();
                }
    
                return _instance;
            }
        }
    
        private CustomConfigManager()
        { 
        }
    
        /// <summary>
        /// 将类实例化为配置文件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public static void CreateAsset()
        {
            //将对象实例化
            ScriptableObject so = ScriptableObject.CreateInstance(typeof(T));
    
            if (so == null)
            {
                Debug.Log("该对象无效,无法将对象实例化");
                return;
            }
    
            //自定义配置资源路径
            string path = Application.dataPath + "/CustomConfigFile/MyFile";
    
            //判断该路径是否存在,不存在的话创建一个
            if (Directory.Exists(path)==false)
            {
                Directory.CreateDirectory(path);
            }
    
    
            //配置文件以.asset结尾
            //将对象名配置成与类名相同
            path = string.Format("Assets/CustomConfigFile/MyFile/{0}.asset",typeof(T).ToString());
    
            //按指定路径生成配置文件
            AssetDatabase.CreateAsset(so,path);
        }
    
    
        /// <summary>
        /// 将配置文件转化为对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public static void GetAsset()
        {
            //配置文件名与对象名一致
            string name = typeof(T).ToString();
            string path = string.Format("Assets/CustomConfigFile/MyFile/{0}.asset",name);
    
            // 将配置文件转化为对象
            T obj = AssetDatabase.LoadAssetAtPath<T>(path);
        }
    }
    

     

     

     

     

     

    【创建可序列化类(演示)】

     

    using UnityEngine;
    using System.Collections;
    using System;
    
    public enum MyEnum
    {
        START,
        PAUSE
    }
    
    /// <summary>
    /// 该类可以序列化
    /// </summary>
    [Serializable]
    public class CustomConfig : ScriptableObject//继承ScriptableObject
    {
        //需要实例化的变量将其设置为public或者设置其属性为[Serializable]
        public MyEnum me = MyEnum.START;
    
        public Texture interge;
    
        [Range(0,10)]
        public float f;
    
        public GameObject obj;
    }
    

     

     

     

     

     

    【测试】

    创建一个Editor文件夹,将脚本添加到其中

    创建好的管理类后,直接调用即可

     

    using UnityEngine;
    using System.Collections;
    using UnityEditor;
    
    public class MySelfText : MonoBehaviour 
    {
        [MenuItem("AssetCreateOrGet/Create")]
        public static void Create()
        {
            CustomConfigManager<CustomConfig>.CreateAsset();
        }
    
        [MenuItem("AssetCreateOrGet/Get")]
        public static void Get()
        {
            CustomConfigManager<CustomConfig>.GetAsset();
        }
    }
    

     

     

     

     

     

    点击按钮,成功创建配置文件

    Project视图:

    Inspector视图:

     

     

     

     

    展开全文
  • Unity3D配置文件的相关操作

    千次阅读 2016-09-03 12:45:24
    Unity3D工程中使用配置文件一般使用Txt、Xml、Json、Db(数据库),四种格式文件对比: Txt: 需要自己设定格式、封装读取的方式;一般只读,不做修改(操作麻烦) Xml:标签语言,有自己的格式,系统提供读取和修改等...
  • 通过读取txt文件,避免直接在程序内进行更改数值,可以直接在txt更改游戏数据。这次写的框架是简单版,只能读不能存,大家可以继续扩充 用的是上次fsm框架的场景 首先把读取文件的代码封装一下---------------之后...
  • 1、Unity3D 开发环境设置 Unity3D 外部调试工具设置 Edit ==> Preferences 根据需要设置 所使用的调试工具 2、VS2015 插件安装 安装插件 可以在VS2015中设置断点 调试脚本文件 插件下载地址: 官方下载地址 ...
  • 一、资源配置文件、序列化的介绍 资源配置文件:在游戏开发中,经常会用到一些配置文件保存一些数据,然后项目运行中读取这些配置文件中的数据在游戏中使用。比如 XML、JSON、Protobuf、Excel、TXT等等。 序列化:...
  • 1.http://tieba.baidu.com/p/2825006787?see_lz=1([Unity3D] 关于txt,xml,json文件的读写,及外部文件(夹)的创建)NOTE (基本认识):其实.txt,.xml,.json这类文件都属于文本文件,类似的还有.lrc歌词文件,.ini配置...
  • 这个工具呢,博主在Unity3D游戏开发之反编译AssetBundle提取游戏资源这篇文章中其实已经提到过了,不过因为有些朋友对如何使用这个工具依然存在问题,所以博主决定特地写一篇文章来讲解如何使用disunity来提取Unity...
  • Unity3d动态加载及生成配置文件

    万次阅读 2013-09-04 13:37:19
    本文大部分转载,作者做了关于配置文件生成工作,但是很遗憾,关于position和rotation信息目前尚未自动生成,运行本例的朋友,需要自己手动添加位置和角度信息,否则程序会报错。 标准的json数据: { ...
  • 首先是获取到配置文件的文本路径,这里就不多做介绍了,不了解的可以查阅Unity3d实现打开窗口选择文件获取路径 获取到路径后 开始准备读写文件,读写文件的方法也有很多 可参考 C#读写文件的两种方式 我这里使用...
  • unity3d可以把游戏发布在很多游戏平台下,但unity3d在不同的运行平台下,本地文件路径是不一样的,这样给我们用给应用配置的本地文本文件的读取带来不小的麻烦,要要把不同的平台来写出不同的路径,特别是android ...
  • 本文大部分转载,作者做了关于配置文件生成工作,但是很遗憾,关于position和rotation信息目前尚未自动生成,运行本例的朋友,需要自己手动添加位置和角度信息,否则程序会报错。标准的json数据: {  "...
  • unity3d ios 读写txt文件

    千次阅读 2015-09-27 17:30:38
    1、加import System.IO; //(JS写的) 2、定义如下变量: private var fileName1 : String;  private var fs1 : FileStream; private var sr1: StreamReader; 3、Start方法: ...// file
  • Unity3D .asset资源文件

    千次阅读 2018-02-26 14:07:20
    在游戏开发中,经常会用到一些配置文件保存一些数据,然后项目运行中读取这些配置文件中的数据在游戏中使用。如:配置血条:根据角色类型(人物、动物、怪物等)配置不同的血条,包括血条大小,血条名或血条预设,...
  • Unity3D实战之文件加密

    千次阅读 2019-07-05 10:08:48
    移动端游戏经常被一些玩家破解成白包,但是为了安全性,开发者还是需要使用算法对文本文件加密,加密的算法非常多,比如通常使用的是MD5算法,OBFS算法,SHA512算法等。由于MD5算法经常使用,网上也有现成的代码本节...
  • [unity3d]保存文件到本地and加载本地文件

    万次阅读 热门讨论 2019-07-26 09:50:43
    更多教程请访问: ... 今天要做一个移动平台的版本控制,先做一个前期的工作,就是从服务器端加载资源,然后读取到本地,再从本地读取资源。这里就以pc平台为例,移动平台也是一样,就是稍微做一点路径上的修改, ...
  • Unity3D可以利用C#的文件流读入文件,但不建议这样做,因为自身就提供了一个TextAsset用于读入数据,尤其是可以将一个关键的csv和txt文件放到Resource文件中,让发布的时候能让其自动打包,不会让用户轻易修改看上去...
  • 程序读取Txt   文件路径:   Appliction.dataPath 项目资源路径   Application.streamingAssetsPath    PC:项目资源路径下的streamingAssets文件夹(需要手动创建同名文件夹)“这个目录只能用...
1 2 3 4 5 ... 20
收藏数 1,014
精华内容 405
热门标签
关键字:

txt配置文件 unity3d