天天看点

unity3d保存文件到本地and加载本地文件 Unity3D游戏本地存储

Unity3D游戏本地存储

Unity3D游戏本地存储玩家积分。Unity提供了一个类似配置文件的类,可以非常好的实现信息数据的存储,那就是PlayerPrefs。它可以存储:int、float和string类型。

// 存进去

PlayerPrefs.SetInt("key1", 10);

PlayerPrefs.SetString("key2", aaaaaa);

PlayerPrefs.SetFloat("key3", 10.009);

// 取出来

int i = PlayerPrefs.GetInt("key1");
           

unity3d保存文件到本地and加载本地文件

001.using UnityEngine;
002.using System.Collections;
003.using System.IO;
004.using System.Collections.Generic;
005.using System;
006.  
007.public class Text : MonoBehaviour {
008.    //文本中每行的内容
009.    ArrayList infoall;
010.    //皮肤资源,这里用于显示中文
011.    public GUISkin skin;
012.    void Start ()
013.    {
014.        print("当前文件路径:"+Application.persistentDataPath);
015.        //删除文件
016.        DeleteFile(Application.persistentDataPath,"FileName.txt");
017.  
018.        //创建文件,共写入3次数据
019.        CreateFile(Application.persistentDataPath,"FileName.txt","dingxiaowei");
020.        CreateFile(Application.persistentDataPath,"FileName.txt","丁小未");
021.        //CreateFile(Application.persistentDataPath ,"Filename.assetbundle","丁小未");
022.        //下载模型
023.        StartCoroutine(loadasset("http://192.168.1.180/3DShowResource/Products/AssetBundles/HX_DY02.assetbundle"));
024.        //得到文本中每一行的内容
025.        infoall = LoadFile(Application.persistentDataPath,"FileName.txt");
026. 
027.         
028.    }
029.    //写入模型到本地
030.    IEnumerator loadasset(string url)
031.    {
032.        WWW w = new WWW(url);
033.        yield return w;
034.        if (w.isDone)
035.        {
036.            byte[] model = w.bytes;
037.            int length = model.Length;
038.            //写入模型到本地
039.            CreateModelFile(Application.persistentDataPath, "Model.assetbundle", model,length);
040.        }
041.    }
042. 
043.    void CreateModelFile(string path, string name, byte[] info, int length)
044.    {
045.        //文件流信息
046.        //StreamWriter sw;
047.        Stream sw;
048.        FileInfo t = new FileInfo(path + "//" + name);
049.        if (!t.Exists)
050.        {
051.            //如果此文件不存在则创建
052.            sw = t.Create();
053.        }
054.        else
055.        {
056.            //如果此文件存在则打开
057.            //sw = t.Append();
058.            return;
059.        }
060.        //以行的形式写入信息
061.        //sw.WriteLine(info);
062.        sw.Write(info, 0, length);
063.        //关闭流
064.        sw.Close();
065.        //销毁流
066.        sw.Dispose();
067.    }
068.  
069.   /**
070.   * path:文件创建目录
071.   * name:文件的名称
072.   *  info:写入的内容
073.   */
074.   void CreateFile(string path,string name,string info)
075.   {
076.      //文件流信息
077.      StreamWriter sw;
078.      FileInfo t = new FileInfo(path+"//"+ name);
079.      if(!t.Exists)
080.      {
081.        //如果此文件不存在则创建
082.        sw = t.CreateText();
083.      }
084.      else
085.      {
086.        //如果此文件存在则打开
087.        sw = t.AppendText();
088.      }
089.      //以行的形式写入信息
090.      sw.WriteLine(info);
091.      //关闭流
092.      sw.Close();
093.      //销毁流
094.      sw.Dispose();
095.   }
096. 
097.    
098.  
099.  /**
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+"//"+ 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.            //将每一行的内容存入数组链表容器中
121.            arrlist.Add(line);
122.        }
123.        //关闭流
124.        sr.Close();
125.        //销毁流
126.        sr.Dispose();
127.        //将数组链表容器返回
128.        return arrlist;
129.   } 
130. 
131.    //读取模型文件
132.   IEnumerator LoadModelFromLocal(string path, string name)
133.   {
134.       print("file:///" + path + "/" + name);
135.       WWW w = new WWW("file:///"+path + "/" + name);
136.       yield return w;
137.       if (w.isDone)
138.       {
139.           Instantiate(w.assetBundle.mainAsset);
140.       }
141.   }
142. 
143.  
144.  /**
145.   * path:删除文件的路径
146.   * name:删除文件的名称
147.   */
148.  
149.   void DeleteFile(string path,string name)
150.   {
151.        File.Delete(path+"//"+ name);
152.   }
153.  
154.   void OnGUI()
155.   {
156.        //用新的皮肤资源,显示中文
157.        GUI.skin = skin;
158.        //读取文件中的所有内容
159.        foreach(string str in infoall)
160.        {
161.            //绘制在屏幕当中
162.            GUILayout.Label(str);
163.        }
164.        if (GUILayout.Button("加载模型"))
165.        {
166.            StartCoroutine(LoadModelFromLocal(Application.persistentDataPath, "Model.assetbundle"));
167.        }
168.   }
169.  
170.}