unity3d从streamingassets拷贝到persistentassets
2015-09-16 11:25
447 查看
一、图
二、代码码 (注释很详细)
三、demo下载
http://download.csdn.net/detail/anyuanlzh/9111411
二、代码码 (注释很详细)
using UnityEngine; using UnityEngine.UI; using System.Collections; using System.IO; using System.Runtime.Serialization.Formatters.Binary; public class main : MonoBehaviour { public string fileName = "img.png"; public Image img_persistent; public Image img_streaming; public Button btn_copy; public Button btn_clear; public Button btn_close; //public Text txt_info; // Use this for initialization void Start() { img_persistent.sprite = null; img_streaming.sprite = null; LoadImage_from_Streaming(fileName, img_streaming); btn_copy.onClick.AddListener(() => { Debug.Log("click btn copy!"); if (img_persistent.sprite == null) { StartCoroutine(copy(fileName)); } }); btn_clear.onClick.AddListener(() => { clear(); }); btn_close.onClick.AddListener(() => { Application.Quit(); }); } /// <summary> /// 将streaming path 下的文件copy到对应用 /// 为什么不直接用io函数拷贝,原因在于streaming目录不支持, /// 不管理是用getStreamingPath_for_www,还是Application.streamingAssetsPath, /// io方法都会说文件不存在 /// </summary> /// <param name="fileName"></param> IEnumerator copy(string fileName) { string src = getStreamingPath_for_www() + fileName; string des = Application.persistentDataPath + "/" + fileName; Debug.Log("des:" + des); Debug.Log("src:" + src); WWW www = new WWW(src); yield return www; if (!string.IsNullOrEmpty(www.error)) { Debug.Log("www.error:" + www.error); } else { //des = Application.persistentDataPath + "/" + fileName; if (File.Exists(des)) { File.Delete(des); } FileStream fsDes = File.Create(des); fsDes.Write(www.bytes, 0, www.bytes.Length); fsDes.Flush(); fsDes.Close(); LoadImage_from_Persistent(fileName, img_persistent); } www.Dispose(); } void clear() { img_persistent.sprite = null; string des = Application.persistentDataPath + "/" + fileName; if (File.Exists(des)) { File.Delete(des); } } /// <summary> /// Load Image from Persistent folder /// </summary> /// <param name="path"></param> /// <param name="uiImg"></param> void LoadImage_from_Persistent(string path, UnityEngine.UI.Image uiImg) { path = getPersistentPath_for_www() + path; Debug.Log("persistent path:" + path); StartCoroutine(wwwLoadImage(path, uiImg)); } /// <summary> /// Load Image from Streaming folder /// </summary> /// <param name="path"></param> /// <param name="uiImg"></param> void LoadImage_from_Streaming(string path, UnityEngine.UI.Image uiImg) { path = getStreamingPath_for_www() + path; Debug.Log("streaming path:" + path); StartCoroutine(wwwLoadImage(path, uiImg)); } IEnumerator wwwLoadImage(string path, UnityEngine.UI.Image uiImg) { WWW www = new WWW(path); yield return www; if (!string.IsNullOrEmpty(www.error)) { Debug.Log("www.error:" + www.error); } uiImg.sprite = Sprite.Create(www.texture, new Rect(new Vector2(0, 0), new Vector2(www.texture.width, www.texture.height)), Vector2.zero); www.Dispose(); } //void LogToText(string log) //{ // Debug.Log(log); // txt_info.text += "\n" + log; //} string getStreamingPath_for_www() { string pre = "file://"; #if UNITY_EDITOR pre = "file://"; #elif UNITY_ANDROID pre = ""; #elif UNITY_IPHONE pre = "file://"; #endif string path = pre + Application.streamingAssetsPath + "/"; return path; } string getPersistentPath_for_www() { string pre = "file://"; #if UNITY_EDITOR || UNITY_STANDALONE_WIN pre = "file:///"; #elif UNITY_ANDROID pre = "file://"; #elif UNITY_IPHONE pre = "file://"; #endif string path = pre + Application.persistentDataPath + "/"; return path; } }
三、demo下载
http://download.csdn.net/detail/anyuanlzh/9111411
相关文章推荐
- Unity 3D引擎:十大最火的插件推荐
- Unity+NGUI性能优化方法总结
- 【Unity3D_常用模块】 MiniMap 小地图
- 发个招聘贴,魔都求手游C++后端,UNITY前端,开发实习生
- Unity3d Shader FX/Flare
- unity5+Vuforia SDK5实现高通AR在unity下的环境构建
- Unity物理引擎:关节简介(角色关节)
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
- Unity3D在Mac OS X中如何打开两个窗口
- Unity物理引擎:关节简介(弹簧关节)
- Unity物理引擎:关节简介(固定关节)
- Unity3D中如何调用序列帧图片为动画
- 【Unity教程】Unity中的C#内存管理
- Unity物理引擎:关节简介(铰链关节)
- Unity3D第三人称无锁定视角实现
- [Unity3D]Unity3D游戏开发之在Android视图中嵌入Unity视图
- [Unity3D]Unity3D游戏开发之从Unity3D到Eclipse
- Unity3D研究院之与Android相互传递消息(十九)
- Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
- Unity3D技巧