Unity远程加载到本地,本地并加载到游戏中

3G技术应用

1人已加入

描述

  话不多说,直接给代码。不会就百度,参考高手们给的例子 试用:

  当你的模型打包完成后,可使用以下的代码进行加载到 本地,再进行到游戏。属于一次性下载到内存里面

  using UnityEngine;

  using System.Collections;

  using System.IO;

  using System.Collections.Generic;

  using System;

  public class load : 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(“”));

  StartCoroutine(loadasset(“”));

  //得到文本中每一行的内容

  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)

  {

  print(path);

  print(name);

  string s = null;

  #if UNITY_ANDROID

  s = path + “/” + name;

  #elif UNITY_IPHONE

  s = path+“/”+name;

  #elif UNITY_STANDALONE_WIN || UNITY_EDITOR

  s = “file://” + path + “/” + name;

  #endif

  print(s);

  WWW w = new WWW(s);

  yield return w;

  print(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”));

  }

  }

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐
  • Unity

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分