首页 > 代码库 > Unity3d- 资源

Unity3d- 资源

Data与Resources文件夹
一般只读文件放到Resources目录
Data用于新建的文件或者要修改的文件
=================================================================

Unity默认的Resource加载
  保存和读取资源的 最简单的 方式了。但是 如果想让资源在编译后不改变,只能这样做。
  因为这里面的内容会 组合并编译到resource.assets文件(此文件可以在编译过的游戏的Data文件中找到)
  可以从编译过的项目文件Resource.assets中去加载

用法
  //Texture2D  (Texture2D)Resouce.Load(fileName);
  //文本资源      (TextAsset)Resouce.Load("ddd");
                       读取文本内容  TestAsset.text
  //声音             (AudioClip)Resouce.Load();

==========================================================

加载编译之后的文件

using System.IO;using UnityEngine;using System.Collections;public class temp : MonoBehaviour{    private string fileName = "a.jpg";    private string url;    private Texture2D externalImage;    // Use this for initialization    void Start()    {        url = "file:" + Application.dataPath;        url = Path.Combine(url, "Resources");        url = Path.Combine(url, fileName);        StartCoroutine(LoadWWW());    }    private IEnumerator LoadWWW()    {        yield return 0;        WWW www=new WWW(url);        yield return www;        externalImage = www.texture;    }    // Update is called once per frame    void Update()    {    }}

需要System.IO类
www类的对象时以“file:"开头的URL,
使用Path.Combine()而不是 ”\   /“以避免跨平台的问题

WWW和资源内容
WWW类定义了几个不同的属性和方法 用于把下载的资源 文件 数据提取到变量中
.text 只读 web数据作为string类型返回
.texture 只读 作为Texture2D类型返回
.GetAudioClip() 方法 作为AudioClip对象类型返回

=======================================================

通过从互联网 下载文件与加载外部资源文件
从服务器下载

using UnityEngine;using System.Collections;public class temp : MonoBehaviour{    private string url="http://www.packtpub.com/sites/default/files/packt_logo.png";    private Texture2D externalImage;    // Use this for initialization    void Start()    {        StartCoroutine(LoadWWW());    }    private void OnGUI()    {        GUILayout.Label("url="+url);        GUILayout.Label(externalImage);    }    private IEnumerator LoadWWW()    {        yield return 0;        WWW imageFile=new WWW(url);        yield return imageFile;        externalImage = imageFile.texture;    }    // Update is called once per frame    void Update()    {    }}

==========================================================

使用外部文本文件和XML数据
最简单的是TextAsset 共有变量(编译后数据文件不再改变的情况下适用)

 public TextAsset DataTestAsset;    private string textData;    void Start()    {        textData = DataTestAsset.text;    }

C#文件流加载外部文本文件

using System;using UnityEngine;using System.Collections;using System.IO;public class FileReadWriteManager{    public void WriteTextFile(string pathAndName, string stringData)    {        //remove file ,if exists        FileInfo textFile=new FileInfo(pathAndName);        if (textFile.Exists)        {            textFile.Delete();        }        //create new empty file        StreamWriter writer;        writer = textFile.CreateText();        //write text to file        writer.Write(stringData);        writer.Close();    }    public string ReadTextFile(string pathAndName)    {        string dataAsString = "";        try        {            //open text file            StreamReader textReader = File.OpenText(pathAndName);            //read content            dataAsString = textReader.ReadToEnd();            textReader.Close();        }        catch (Exception e)        {                    }        return dataAsString;    }}

调用示例

private string fileName = "cities.txt";    private string filePath = "";    private FileReadWriteManager fileReadWriteManager=new FileReadWriteManager();    void Start()    {        filePath = Path.Combine(Application.dataPath, "Resources");        filePath = Path.Combine(filePath, fileName);        string textContent = fileReadWriteManager.ReadTextFile(filePath);    }
 private string fileName = "hello.txt";    private string foleName = "Data";    //需要在Project面板中创建一个Data目录文件夹    private string filePath = "";    private FileReadWriteManager fileReadWriteManager=new FileReadWriteManager();    void Start()    {        filePath = Application.dataPath + Path.DirectorySeparatorChar + fileName;        string textData = http://www.mamicode.com/"abc\n def";        fileReadWriteManager.WriteTextFile(filePath, textData);        filePath = Path.Combine(filePath, fileName);        string textContent = fileReadWriteManager.ReadTextFile(filePath);    }

 

Unity3d- 资源