您的位置:首页 > 移动开发 > Unity3D

unity异步从外部文件加载音频和图片

2015-12-18 16:06 579 查看
标准的从Resources和Assetbundle读取这里不做介绍了,

主要的应用场景是从互联网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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: