1 ⽀持⽂件类型
.txt.html.htm.xml.bytes.json.csv.yaml.fnt
2 寻找⽂件
1 //Load texture from disk
TextAsset bindata= Resources.Load(\"Texture\") as TextAsset; Texture2D tex = new Texture2D(1,1); tex.LoadImage(bindata.bytes);
2 直接在编辑器中赋值
public TextAsset textFile;
3 配置⽂件通常分⾏配置属性
例如:
英雄名称,等级,⽣命,攻击
hero1,1,1,1 hero2,1,1,1
string[] lines = textFile.text.Split(\"\\n\"[0]); 可以读出属性 lines[0] = \"英雄名称,等级,⽣命,攻击\" lines[1] = \"hero1,1,1,1\" lines[2] = \"hero2,1,1,1\"
然后可以读出每条数据的具体属性
for (int i = 0; i < lines.Length - 2; i++) { string[] parts = lines[i + 1].Split(\ }
parts[0] = \"hero1\" parts[1] = \"1\" parts[2] = \"1\" parts[2] = \"1
补充:Unity加载TextAsset中的内容为空
需求需要从Resources⽬录下加载json⽂件,于是在⽬录下创建了个txt⽂本,然后修改后缀名为.Json,
⽤Resource.Load 新开⼯程却发现⽤脚本⽣成的json⽂件却是可以获取到的,再仔细检查发现选中json⽂件的时候属性⾯板竟然什么都没显⽰出来,于是怀疑json⽂件不正确没有被unity识别到,⽤vs⾼级保存选项发现⽂本竟然是GBK2312格式,改为UTF-8格式发现可以显⽰出来并能读取到text。 于是怀疑是创建txt⽂本时默认编码格式不正确,发现默认编码格式是ASCII格式,看来以后创建json的时候更要注意编码格式的问题了。补充:Unity 简易读取配置⽂件内容(txt,懒⼈⽤) 翻以前别⼈写的⼀个项⽬,看到读取本地配置⽂件的,⽬前虽然不太懂,但是先放着,估摸以后⽜B了就看懂了 ⾸先⾃定义⼀个config类: using UnityEngine; using System.Collections;using System; [Serializable] //⼀定要有,同时不能继承MonoBehaviourpublic class Config { public int Num1; //我⽂档⾥有2个int,2个string类型 public int Num2; public string String1; public string String2; // Use this for initialization void Start () {} private static Config _data; public static Config _Data { get { if (_data == null) { string json = System.IO.File.ReadAllText(Application.streamingAssetsPath + \"/test.txt\"); _data = JsonUtility.FromJson return _data; } } } 然后在unity 的StreamingAssets⽂件夹下创建个test.txt⾥⾯内容:(⼀定要有花括号) {\"Num1\":30,\"Num2\":60,\"String1\":\"aaa\ 然后再其他脚本⾥,直接调⽤就好了 例如: using UnityEngine; using System.Collections; public class LoadConfig : MonoBehaviour {// Use this for initializationvoid Start () { print(Config._Data.Num1); print(Config._Data.String2); } // Update is called once per framevoid Update () {}} 2017.3.27更新:⾃⼰⼜理解了⼀点 如果要读取⽹页某天⽓信息,但是不⽌⼀个花括号,分了⼏层,需要怎么做?例如信息: {\"weatherinfo\":{\"city\":\"北京\东南风\级\暂⽆实况\ 上⾯的就不多复述,⼤概思路就是再建⽴⼀个类保存⼆级信息Config类修改如下(之前的全部删除): using UnityEngine; using System.Collections; using System.Collections.Generic;using System; [Serializable] //⼀定要有,同时不能继承MonoBehaviourpublic class Config { public Weatherinfo weatherinfo; //这⾥的weatherinfo 就是上⾯信息的第⼀层weatherinfo,建⽴⽗级保存信息(名字要对应天⽓的weatherinfo)} [Serializable] public class Weatherinfo //weatherinfo下的信息保存,类⾥的city 对应信息⾥的city,⼀次类推,我就写2个了;{ public string city; public int cityid;} 再新建⼀个名字为LoadWWW的脚本,⽤于读取⽹络的数据: using UnityEngine; using System.Collections;using System; public class LoadWWW : MonoBehaviour { Config _config = new Config();// Use this for initializationvoid Start () { StartCoroutine(\"load\"); Invoke(\"LoadMessage\} // Update is called once per framevoid Update () {} IEnumerator load() { WWW w = new WWW(\"http://www.weather.com.cn/data/sk/101010100.html\");//加载某⽹页数据,根据⾃⼰需求改 yield return w; string json = w.text; print(json); _config = JsonUtility.FromJson void LoadMessage() { print(_config.weatherinfo.city); print(_config.weatherinfo.cityid); }} 以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。如有错误或未考虑完全的地⽅,望不吝赐教。 因篇幅问题不能全部显示,请点此查看更多更全内容