请教关于unityunity3d 加载本地音频的资源的问题

unity3d资源包加密问题笔记_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
unity3d资源包加密问题笔记
上传于||文档简介
&&实​现​资​源​包​加​密
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢20:59 提问
关于Unity3d WWW 加载本地资源的问题
WWW www = new WWW ("file://E:/项目/Assets/StreamingAssets/Actor.assetbundle");
WWW www = new WWW ("file:///E:/项目/Assets/StreamingAssets/Actor.assetbundle");
两种都试过都不行
You are trying to load data from a www stream which had the following error when downloading.
Couldn't open file /项目/Assets/StreamingAssets/Actor.assetbundle
UnityEngine.WWW:get_assetBundle()c__Iterator17:MoveNext() (at Assets/EffectScripts/ABC.cs:20)
求教大神 如何破解
按赞数排序
格式错了 最好中文路径去掉,然后改成WWW www = new WWW (@"file:///E:/项目/Assets/StreamingAssets/Actor.assetbundle")就行了
不要使用中文路径。。。。
路径格式不能识别。
638关注|392收录
其他相似问题unity动态加载资源并缓存到本地
有人说使用unity 的WWW类的LoadFromCacheOrDownload方法就可以实现缓存加载的方式,但是我自己使用的时候发现在unity编辑器环境下是可以的,但是到Android和iOS平台下就会有问题,会导致每次进入资源都是从网络上下载,严重影响效率,所以有了这篇文章 首先说一下整体的设计思路,项目中有很多资源,如模型,声音等,是从服务端下载下来的,所以在每次使用资源的时候先判断当前的缓存的目录里面是否有资源,有则从本地缓存加载,没有的话再去服务端下载,并缓存到本地。设计思路有了,那么接下来就是一步步实现。
创建一个类,就叫CachedDownloader,包含的方法如下 static long GetInt64HashCode(string strText) {
var s1 = strText.Substring(0, strText.Length / 2);
var s2 = strText.Substring(strText.Length / 2);
var x= ((long)s1.GetHashCode()) << 0x20 | s2.GetHashCode();
}static bool CheckFileOutOfDate(string filePath){System.DateTime written = File.GetLastWriteTimeUtc(filePath);
System.DateTime now = System.DateTime.UtcN
double totalHours = now.Subtract(written).TotalH
return (totoalHours>300);}static IEnumerator DoLoad(WWW www, string filePath, bool web) {
if (www.error == null)
Debug.Log("SAVING DOWNLOAD" + www.url + " to " + filePath);
File.WriteAllBytes(filePath, www.bytes);
Debug.Log("SAVING DONE" + www.url + " to " + filePath);
Debug.Log("SUCCESS CACHE LOAD OF " + www.url);
File.Delete(filePath);
Debug.Log("WWW ERROR " + www.error);
} }static public WWW GetCachedWWW(string url) {
string fileP#if UNITY_EDITOR
filePath = Application.dataPath + "/temp";#else
filePath = Application.persistentDataP#endif //使用文件名的hashCode作为资源名称 if (url.EndsWith(".mp3")) { filePath += "/" + GetInt64HashCode(url) + ".mp3"; } else { filePath += "/" + GetInt64HashCode(url); }
bool web =
bool useCached =
useCached = System.IO.File.Exists(filePath) && !CheckFileOutOfDate(filePath); //使用缓存路径
if (useCached)
string pathforwww = "file://" + fileP
Debug.Log("TRYING FROM CACHE " + url + "file " + pathforwww);
www = new WWW(pathforwww);
} //使用服务端路径
www = new WWW(url);
CachedTextureDownloader.Instance.StartCoroutine(DoLoad(www, filePath, web));
} 其中GetInt64HashCode是为了获取hashCode作为文件名的,而在判断到底是否使用服务端路径那里用了一个CheckFileOutOfDate来判断文件是否过期,这个并不是绝对条件,可以根据自己的业务需求去更改,(比如可以不依赖创建的时间而依赖其他判断条件,或者修改认为过期的时间小时数等,总之是为了让资源重新去下载的限制条件,有些像AssetBundle里的版本号)Doload方法是判断好是否使用服务端下载后,实际创建http请求下载的方法。 类写好以后在实际使用的地方调用类的GetCachedWWW方法,传入你要下载的资源的地址即可
最新教程周点击榜
微信扫一扫}

我要回帖

更多关于 unity加载本地资源 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信