話不多說,直接給代碼。不會就百度,參考高手們給的例子 試用:
當你的模型打包完成后,可使用以下的代碼進行加載到 本地,再進行到游戲。屬于一次性下載到內存里面
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”));
}
}
}
評論