小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 Steven書房 2014-02-12

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

下面是不同平臺路徑的預(yù)編譯:

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

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

操作步驟:

創(chuàng)建腳本,命名Text.cs,并且將其拖放到MainCamera中

  1. using UnityEngine;  
  2. using System.Collections;  
  3. using System.IO;  
  4. using System.Collections.Generic;  
  5. using System;  
  6.    
  7. public class Text : MonoBehaviour {  
  8.     //文本中每行的內(nèi)容  
  9.     ArrayList infoall;  
  10.     //皮膚資源,這里用于顯示中文  
  11.     public GUISkin skin;  
  12.     void Start ()  
  13.     {  
  14.         print("當(dāng)前文件路徑:"+Application.persistentDataPath);  
  15.         //刪除文件  
  16.         DeleteFile(Application.persistentDataPath,"FileName.txt");  
  17.    
  18.         //創(chuàng)建文件,共寫入3次數(shù)據(jù)  
  19.         CreateFile(Application.persistentDataPath,"FileName.txt","dingxiaowei");  
  20.         CreateFile(Application.persistentDataPath,"FileName.txt","丁小未");  
  21.         //CreateFile(Application.persistentDataPath ,"Filename.assetbundle","丁小未");  
  22.         //下載模型  
  23.         StartCoroutine(loadasset("http://192.168.1.180/3DShowResource/Products/AssetBundles/HX_DY02.assetbundle"));  
  24.         //得到文本中每一行的內(nèi)容  
  25.         infoall = LoadFile(Application.persistentDataPath,"FileName.txt");  
  26.   
  27.           
  28.     }  
  29.     //寫入模型到本地  
  30.     IEnumerator loadasset(string url)  
  31.     {  
  32.         WWW w = new WWW(url);  
  33.         yield return w;  
  34.         if (w.isDone)  
  35.         {  
  36.             byte[] model = w.bytes;  
  37.             int length = model.Length;  
  38.             //寫入模型到本地  
  39.             CreateModelFile(Application.persistentDataPath, "Model.assetbundle", model,length);  
  40.         }  
  41.     }  
  42.   
  43.     void CreateModelFile(string path, string name, byte[] info, int length)  
  44.     {  
  45.         //文件流信息  
  46.         //StreamWriter sw;  
  47.         Stream sw;  
  48.         FileInfo t = new FileInfo(path + "http://" + name);  
  49.         if (!t.Exists)  
  50.         {  
  51.             //如果此文件不存在則創(chuàng)建  
  52.             sw = t.Create();  
  53.         }  
  54.         else  
  55.         {  
  56.             //如果此文件存在則打開  
  57.             //sw = t.Append();  
  58.             return;  
  59.         }  
  60.         //以行的形式寫入信息  
  61.         //sw.WriteLine(info);  
  62.         sw.Write(info, 0, length);  
  63.         //關(guān)閉流  
  64.         sw.Close();  
  65.         //銷毀流  
  66.         sw.Dispose();  
  67.     }   
  68.    
  69.    /** 
  70.    * path:文件創(chuàng)建目錄 
  71.    * name:文件的名稱 
  72.    *  info:寫入的內(nèi)容 
  73.    */  
  74.    void CreateFile(string path,string name,string info)  
  75.    {  
  76.       //文件流信息  
  77.       StreamWriter sw;  
  78.       FileInfo t = new FileInfo(path+"http://"+ name);  
  79.       if(!t.Exists)  
  80.       {  
  81.         //如果此文件不存在則創(chuàng)建  
  82.         sw = t.CreateText();  
  83.       }  
  84.       else  
  85.       {  
  86.         //如果此文件存在則打開  
  87.         sw = t.AppendText();  
  88.       }  
  89.       //以行的形式寫入信息  
  90.       sw.WriteLine(info);  
  91.       //關(guān)閉流  
  92.       sw.Close();  
  93.       //銷毀流  
  94.       sw.Dispose();  
  95.    }  
  96.   
  97.      
  98.    
  99.   /** 
  100.    * 讀取文本文件 
  101.    * path:讀取文件的路徑 
  102.    * name:讀取文件的名稱 
  103.    */  
  104.    ArrayList LoadFile(string path,string name)  
  105.    {  
  106.         //使用流的形式讀取  
  107.         StreamReader sr =null;  
  108.         try{  
  109.             sr = File.OpenText(path+"http://"+ name);  
  110.         }catch(Exception e)  
  111.         {  
  112.             //路徑與名稱未找到文件則直接返回空  
  113.             return null;  
  114.         }  
  115.         string line;  
  116.         ArrayList arrlist = new ArrayList();  
  117.         while ((line = sr.ReadLine()) != null)  
  118.         {  
  119.             //一行一行的讀取  
  120.             //將每一行的內(nèi)容存入數(shù)組鏈表容器中  
  121.             arrlist.Add(line);  
  122.         }  
  123.         //關(guān)閉流  
  124.         sr.Close();  
  125.         //銷毀流  
  126.         sr.Dispose();  
  127.         //將數(shù)組鏈表容器返回  
  128.         return arrlist;  
  129.    }    
  130.   
  131.     //讀取模型文件  
  132.    IEnumerator LoadModelFromLocal(string path, string name)  
  133.    {  
  134.        string s = null;  
  135. #if UNITY_ANDROID  
  136.        s = "jar:file://"+path+"/"+name;  
  137. #elif UNITY_IPHONE  
  138.        s = path+"/"+name;  
  139. #elif UNITY_STANDALONE_WIN || UNITY_EDITOR  
  140.        s = "file://"+path+"/"+name;  
  141. #endif  
  142.        WWW w = new WWW(s);  
  143.        yield return w;  
  144.        if (w.isDone)  
  145.        {  
  146.            Instantiate(w.assetBundle.mainAsset);  
  147.        }  
  148.    }  
  149.   
  150.    
  151.   /** 
  152.    * path:刪除文件的路徑 
  153.    * name:刪除文件的名稱 
  154.    */  
  155.    
  156.    void DeleteFile(string path,string name)  
  157.    {  
  158.         File.Delete(path+"http://"+ name);  
  159.    }  
  160.    
  161.    void OnGUI()  
  162.    {  
  163.         //用新的皮膚資源,顯示中文  
  164.         GUI.skin = skin;  
  165.         //讀取文件中的所有內(nèi)容  
  166.         foreach(string str in infoall)  
  167.         {  
  168.             //繪制在屏幕當(dāng)中  
  169.             GUILayout.Label(str);  
  170.         }  
  171.         if (GUILayout.Button("加載模型"))  
  172.         {  
  173.             StartCoroutine(LoadModelFromLocal(Application.persistentDataPath, "Model.assetbundle"));  
  174.         }  
  175.    }  
  176.    
  177. }  



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

運行后的效果:



這里演示了讀取操作文本和打包文件,如果切換到移動平臺可能中文字體無法顯示,就需要做個字體即可,后面繼續(xù)版本控制后續(xù)工作。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多