中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[unity3d]保存文件到本地and加載本地文件

發布時間:2020-05-16 21:20:20 來源:網絡 閱讀:1269 作者:蓬萊仙羽 欄目:游戲開發

今天要做一個移動平臺的版本控制,先做一個前期的工作,就是從服務器端加載資源,然后讀取到本地,再從本地讀取資源。這里就以pc平臺為例,移動平臺也是一樣,就是稍微做一點路徑上的修改,

下面是不同平臺路徑的預編譯:

//不同平臺下StreamingAssets的路徑是不同的,這里需要注意一下。 public static readonly string PathURL = #if UNITY_ANDROID   //安卓 	"jar:file://" + Application.dataPath + "!/assets/"; #elif UNITY_IPHONE  //iPhone 	Application.dataPath + "/Raw/"; #elif UNITY_STANDALONE_WIN || UNITY_EDITOR  //windows平臺和web平臺 	"file://" + Application.dataPath + "/StreamingAssets/"; #else         string.Empty; #endif

關于資源的打包不理解的,我在之前的博文中有介紹:http://blog.csdn.net/dingxiaowei2013/article/details/17439887,可以去看一下這篇文章。

操作步驟:

創建腳本,命名Text.cs,并且將其拖放到MainCamera中

using UnityEngine; using System.Collections; using System.IO; using System.Collections.Generic; using System;   public class Text : MonoBehaviour {     //文本中每行的內容     ArrayList infoall;     //皮膚資源,這里用于顯示中文     public GUISkin skin;     void Start ()     {         print("當前文件路徑:"+Application.persistentDataPath);         //刪除文件         DeleteFile(Application.persistentDataPath,"FileName.txt");           //創建文件,共寫入3次數據         CreateFile(Application.persistentDataPath,"FileName.txt","dingxiaowei");         CreateFile(Application.persistentDataPath,"FileName.txt","丁小未");         //CreateFile(Application.persistentDataPath ,"Filename.assetbundle","丁小未");         //下載模型         StartCoroutine(loadasset("http://192.168.1.180/3DShowResource/Products/AssetBundles/HX_DY02.assetbundle"));         //得到文本中每一行的內容         infoall = LoadFile(Application.persistentDataPath,"FileName.txt");               }     //寫入模型到本地     IEnumerator loadasset(string url)     {         WWW w = new WWW(url);         yield return w;         if (w.isDone)         {             byte[] model = w.bytes;             int length = model.Length;             //寫入模型到本地             CreateModelFile(Application.persistentDataPath, "Model.assetbundle", model,length);         }     }      void CreateModelFile(string path, string name, byte[] info, int length)     {         //文件流信息         //StreamWriter sw;         Stream sw;         FileInfo t = new FileInfo(path + "//" + name);         if (!t.Exists)         {             //如果此文件不存在則創建             sw = t.Create();         }         else         {             //如果此文件存在則打開             //sw = t.Append();             return;         }         //以行的形式寫入信息         //sw.WriteLine(info);         sw.Write(info, 0, length);         //關閉流         sw.Close();         //銷毀流         sw.Dispose();     }       /**    * path:文件創建目錄    * name:文件的名稱    *  info:寫入的內容    */    void CreateFile(string path,string name,string info)    {       //文件流信息       StreamWriter sw;       FileInfo t = new FileInfo(path+"//"+ name);       if(!t.Exists)       {         //如果此文件不存在則創建         sw = t.CreateText();       }       else       {         //如果此文件存在則打開         sw = t.AppendText();       }       //以行的形式寫入信息       sw.WriteLine(info);       //關閉流       sw.Close();       //銷毀流       sw.Dispose();    }          /**    * 讀取文本文件    * path:讀取文件的路徑    * name:讀取文件的名稱    */    ArrayList LoadFile(string path,string name)    {         //使用流的形式讀取         StreamReader sr =null;         try{             sr = File.OpenText(path+"//"+ name);         }catch(Exception e)         {             //路徑與名稱未找到文件則直接返回空             return null;         }         string line;         ArrayList arrlist = new ArrayList();         while ((line = sr.ReadLine()) != null)         {             //一行一行的讀取             //將每一行的內容存入數組鏈表容器中             arrlist.Add(line);         }         //關閉流         sr.Close();         //銷毀流         sr.Dispose();         //將數組鏈表容器返回         return arrlist;    }        //讀取模型文件    IEnumerator LoadModelFromLocal(string path, string name)    {        string s = null; #if UNITY_ANDROID        s = "jar:file://"+path+"/"+name; #elif UNITY_IPHONE        s = path+"/"+name; #elif UNITY_STANDALONE_WIN || UNITY_EDITOR        s = "file://"+path+"/"+name; #endif        WWW w = new WWW(s);        yield return w;        if (w.isDone)        {            Instantiate(w.assetBundle.mainAsset);        }    }      /**    * path:刪除文件的路徑    * name:刪除文件的名稱    */      void DeleteFile(string path,string name)    {         File.Delete(path+"//"+ name);    }      void OnGUI()    {         //用新的皮膚資源,顯示中文         GUI.skin = skin;         //讀取文件中的所有內容         foreach(string str in infoall)         {             //繪制在屏幕當中             GUILayout.Label(str);         }         if (GUILayout.Button("加載模型"))         {             StartCoroutine(LoadModelFromLocal(Application.persistentDataPath, "Model.assetbundle"));         }    }   }



上面設計到文件流操作,還有就是Application.persistentDataPath,這里并沒有用Application.DataPath,后者貌似在移動平臺是找不到的,前者就是所謂的沙盒文件,具有讀寫權限。

運行后的效果:

[unity3d]保存文件到本地and加載本地文件
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

申扎县| 赤城县| 阜城县| 商丘市| 瑞昌市| 醴陵市| 浮梁县| 定州市| 余干县| 靖远县| 佛冈县| 乌苏市| 颍上县| 马龙县| 金塔县| 绍兴县| 枣阳市| 施甸县| 宁南县| 黄大仙区| 治县。| 安龙县| 白水县| 宜春市| 县级市| 乐山市| 金阳县| 沂源县| 明光市| 临夏市| 綦江县| 长兴县| 宁河县| 公安县| 肃宁县| 仁寿县| 阳城县| 阳山县| 塔城市| 开原市| 民勤县|