unity异步从外部文件加载音频和图片
2015-12-18 16:06
579 查看
标准的从Resources和Assetbundle读取这里不做介绍了,
主要的应用场景是从互联网http服务器 或者从本地的文件夹读取资源。
音频加载逻辑:
音频是可以直接读取文件后同步返回一个AudioClip的句柄,然后开始加载,加载到可以播放的时候,即开始播放。
方法:
WWW的GetAudioClip 可以在没有完全下载完成前获得一个audio stream的AudioClip,我们直接赋值给AudioSource的clip属性,然后在Update里去检测:
这样可以完成异步加载播放。
图片加载逻辑:
我们希望图片立即能返回一个Sprite赋值给UI组件,然后等完成加载完成后,改变UI组件上绑定的texture
方法:
先创建一个texture2d
用它创建Sprite
启动协程开始异步加载图片资源
而在第二步的时候,我们就可以将sp赋值给Image组件的sprite
将在加载完成后,改变Image中组件的texture。
主要的应用场景是从互联网http服务器 或者从本地的文件夹读取资源。
音频加载逻辑:
音频是可以直接读取文件后同步返回一个AudioClip的句柄,然后开始加载,加载到可以播放的时候,即开始播放。
方法:
WWW www = new WWW(ModManager.ModBaseUrl + path); AudioClip ac = www.GetAudioClip(true, true);
WWW的GetAudioClip 可以在没有完全下载完成前获得一个audio stream的AudioClip,我们直接赋值给AudioSource的clip属性,然后在Update里去检测:
if(audioMgr.clip != null && !audioMgr.isPlaying && audioMgr.clip.isReadyToPlay){ audioMgr.Play (); }
这样可以完成异步加载播放。
图片加载逻辑:
我们希望图片立即能返回一个Sprite赋值给UI组件,然后等完成加载完成后,改变UI组件上绑定的texture
方法:
先创建一个texture2d
Texture2D t = new Texture2D(1,1,TextureFormat.ARGB4444, false);
用它创建Sprite
Sprite sp = Sprite.Create(t, new Rect(0,0,1f,1f), new Vector2(0.5f,0.5f));
启动协程开始异步加载图片资源
WWW www = new WWW(url); yield return www; www.LoadImageIntoTexture(t);
而在第二步的时候,我们就可以将sp赋值给Image组件的sprite
将在加载完成后,改变Image中组件的texture。
相关文章推荐
- Unity封装dll教程整理
- 3dsmax的模型优化技巧
- Unity中使用Bumpmap Lightmap教程
- 使用Unity开发项目的一点经验
- unity3d用鼠标拖动物体的一段代码
- Script 脚本所有编译器属性详解
- 如何向另一场景发送信息
- 构建Unity3D信号槽机制 【ZObject.cs】
- unitywebplayer屏蔽鼠标右键
- Unity NGUI 描点控件的位移动画
- Unity 帧率设置和显示FPS脚本
- 【Unity3D基础教程】给初学者看的Unity教程(零):如何学习Unity3D
- Unity3d动态数据管理(1)Export AssetBundles
- Unity3d在安卓android的更新(APK覆盖)
- Excel2Unity
- Unity中鼠标左键按下,拖拽物体移动
- 【Unity3D自学记录】利用代码改动图片属性(Inspector)
- unity 发布web player版,网页打开报Failed to initialize player's 3D settings
- 【Unity】Unity手游优化总概
- Unity3d实现画笔