Unity各平台本地路劲问题

来源:互联网 发布:mac的扑克游戏在哪里 编辑:程序博客网 时间:2024/04/30 02:22

各平台本地路径问题, 此路径不是 Unity工程中 Assets 文件加下的路径, 在PC端为本地路径,在移动端为沙盒路径,所以文件存储在 Unity工程Assets下,在移动端是不能用如下方法读取的

将代码挂在摄像机上运行即可

using UnityEngine;using System.Collections;using System.IO;public class Read : MonoBehaviour {    private string path = "";    string content = "";// Use this for initializationvoid Start () {
         path = Application.persistentDataPath;        //获取本地路径        //在iphone,Android平台上为沙盒路径, 在PC端为 本地 路径,  切记不是在Unity工程中“Assets”下的路径#if ((UNITY_IPHONE || UNITY_ANDROID) && (!UNITY_EDITOR))        path += "/Documents";#else        path = Application.dataPath; // PC端,本地路径#endif        //如果平台上该路径不存在,即没有相应的文件夹,按照该路径创建一个        if (!Directory.Exists(path))        {            Directory.CreateDirectory(path);        }}    void OnGUI()    {        if (GUI.Button(new Rect(50, 50, 200, 50), "Read"))        {            //读取文件            ReadMyTxt(path, "AAA.txt");        }        if (GUI.Button(new Rect(50, 150, 200, 50), "Create"))        {            CreateTxt(path, "AAA.txt", "aaaaaaaaaabbbbbbbbbbcccccccccdddddddddd");        }        if (GUI.Button(new Rect(50, 300, 200, 50), "Clear"))        {//清空数据            content = "";        }        GUI.Label(new Rect( 50, 500, 300, 80), "path   :  " + path);        GUI.Label(new Rect(50, 600, 300, 80), "content   :  " + content);    }    //读取txt文件,参数1为路径,参数2为文件名(要带后缀)    private void ReadMyTxt(string path, string txtName)    {        string sss = path + "/" + txtName;        if (!File.Exists(sss)) //如果文件不存在退出        {            content = "!Exists " + sss;            return;        }        try        {            //实例化文件流,参数1 路径,参数2文件操作方式            FileStream file = new FileStream(sss, FileMode.Open);            StreamReader sr = new StreamReader(file);            content = sr.ReadToEnd(); //从文件头读取到文件尾            sr.Close();  //关闭流释放空间            file.Close();         }        catch{}    }    //创建文件,参数1 路径,参数2 文件名,参数3 写入信息    private void CreateTxt(string path, string txtName, string info)    {        string sss = path + "/" + txtName;        try        {            StreamWriter sw;            FileInfo t = new FileInfo(sss);            //如果文件不存在则创建一个            if (!t.Exists)            {                sw = t.CreateText();            }            else            {                sw = t.AppendText();            }            //写入信息            sw.WriteLine(info);            sw.Close();            sw.Dispose();        }        catch {}    }}


本脚本适合在有服务器的情况下,项目更新时从服务器加载一些文件,然后将文件写入到本地(在移动平台为写入沙盒)

注意:在Unity项目中Assets下创建的文件夹,里边存放的一些文件,在安装时,是不会写入到移动端的沙盒路径内的,所以如果在开发中本来已经放入工程中的文件信息,用该方法是读取不到文件的。


(至于在项目中存放的文件信息如何读取,请在后续本人后续的博客中寻找)



0 0
原创粉丝点击