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

标准的从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。

你可能感兴趣的:(.NET,游戏开发及技术)