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

来源:互联网 发布:矩阵的乘法计算方法 编辑:程序博客网 时间:2024/05/18 19:19

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.        else055.        {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.      else085.      {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.}


原创粉丝点击