解决Unity 中WWW加载 AssetBundle---中文路径
2014-06-06 09:57
776 查看
之前做项目的时候没有注意到,因为我个人习惯文件夹的名字都是非中文的,所以用WWW加载AssetBundle一直没有什么问题,也不知道WWW加载不能含有中文路径(记得4.0版本之前好像是可以的,不确定)。然后发给测试去测的时候都加载不了了,检查才发现WWW加载含有中文路径就不能加载。
在网上看到了一位仁兄的方案(**),这个虽然能够解决问题,但觉得这样是不太好的解决方案,消耗比较大。
看了下API中有AssetBundle.CreateFromMemory 的方法,这样就好解决了。因为FileStream是允许中文路径的,可以先通过文件流把AssetBundle读取到内存,在通过CreateFromMemory 创建AssetBundle资源,这样的话就避开了WWW不能加载中文路径的问题。
示例代码:
在网上看到了一位仁兄的方案(**),这个虽然能够解决问题,但觉得这样是不太好的解决方案,消耗比较大。
看了下API中有AssetBundle.CreateFromMemory 的方法,这样就好解决了。因为FileStream是允许中文路径的,可以先通过文件流把AssetBundle读取到内存,在通过CreateFromMemory 创建AssetBundle资源,这样的话就避开了WWW不能加载中文路径的问题。
示例代码:
using UnityEngine; using System.Collections; using System.IO; public class LoadAsset : MonoBehaviour { AssetBundleCreateRequest asset;//定义一个资源包创建请求 IEnumerator LoadAssetBundle() { FileStream AssetIO = new FileStream(Application.dataPath + @"/StreamingAssets/好孩子/001.dat", FileMode.Open, FileAccess.ReadWrite); //创建文件流(对象现含有中文) byte[] assetbytes = new byte[AssetIO.Length]; AssetIO.Read(assetbytes, 0, (int)AssetIO.Length); AssetIO.Close(); asset = AssetBundle.CreateFromMemory(assetbytes);//从内存中创建资源 yield return asset; AssetBundle LoadAsset = asset.assetBundle; if (asset.isDone) { Instantiate(LoadAsset.Load("Test_001")); } }
相关文章推荐
- 解决Unity 中WWW加载 AssetBundle---中文路径
- Unity 中WWW加载 AssetBundle---中文路径
- Unity资源处理机制(Assets/WWW/AssetBundle/...)读取和加载资源方式详解
- Unity 编辑器环境下不能正确加载Android Assetbundle 中的 Shader 解决方法
- Unity资源处理机制(Assets/WWW/AssetBundle/...)读取和加载资源方式详解
- Assetbundle加载中文路径方法FileStream
- Unity AssetBundle加载错误(已解决)
- Unity资源处理机制(Assets/WWW/AssetBundle/...)读取和加载资源方式详解
- unity 加载Assetbundle文件夹路径需要注意
- 关于unity 中使用AssetBundle加载资源,shader偶尔会丢失的问题解决办法
- Unity 编辑器环境下不能正确加载Android Assetbundle 中的 Shader 解决方法
- Unity 通过 www 下载 assetbundle , 在 iOS9 设备无法下载的问题
- Unity游戏开发使用Assetbundle加载场景实战
- Unity5.x版本AssetBundle加载研究
- Unity游戏开发使用Assetbundle加载场景实战
- Unity5.3.5的AssetBundle加载
- Unity创建Assetbundle与加载
- unityassetbundle 打包存放百度云加载
- Unity游戏开发使用Assetbundle加载场景实战
- Unity游戏开发使用Assetbundle加载场景的原理