WWW同步加载资源方案

AudioClip有从外部加载资源的方式,但是如果不知道采样率什么的就悲剧了。。
Texture2D有从外部加载资源的方式,但是某些设备(比如某米3)加载非2次幂大小的就悲剧了。。
WWW加载资源要协程,还要写异步代码有点忧伤。。

using UnityEngine;
using System.Collections;

namespace Babybus.Framework
{
    public class WWWLoader
    {
        public static AudioClip LoadAudioClipFromFile(string path)
        {
            var www = LoadFromFile(path);
            if (www == null)
                return null;

            return www.audioClip;
        }

        public static Texture2D LoadTexture2DFromFile(string path)
        {
            var www = LoadFromFile(path);
            if (www == null)
                return null;

            return www.texture;
        }

        private static WWW LoadFromFile(string path)
        {
            var enumerator = LoadFromFileEnumerator(path);

            while (enumerator.MoveNext())
                ;

            return enumerator.Current as WWW;
        }

        private static IEnumerator LoadFromFileEnumerator(string path)
        {
            var www = new WWW("file:///" + path);
            while (!www.isDone)
                ;

            yield return www;
        }
    }
}

你可能感兴趣的:(WWW同步加载资源方案)