IEnumerator _LoadAssetBundleAsync(string assetBundleName, LoadAssetBundleAsyncDelegate callback)
    {
        assetBundleName  = assetBundleName.ToLower();
        assetBundleName += ".unity3d";
        if (s_AssetBundleDependencies.ContainsKey(assetBundleName))
        {
            string[] dependencies = s_AssetBundleDependencies [assetBundleName];
            foreach (string dependency in dependencies)
            {
                if (s_LoadedAssetBundles.ContainsKey(dependency))
                {
                    s_LoadedAssetBundles [dependency].refCount++;
                }
                else
                {
                    // 加载
                    //string filename = Path.Combine(Application.persistentDataPath, dependency);
                    string filename = Path.Combine(AssetBundleLoader.STREAMING_ASSET_PATH, dependency);
                    WWW    www      = new WWW(filename);
                    yield return(www);

                    if (www.error == null)
                    {
                        AssetBundle ab = AssetBundle.LoadFromMemory(www.bytes);
                        Debug.LogFormat("AssetBundle(Dependency) loaded : {0}", dependency);
                        LoadedAssetBundle loadedAssetBundle = new LoadedAssetBundle(ab);
                        s_LoadedAssetBundles.Add(dependency, loadedAssetBundle);
                        www.Dispose();
                        continue;
                    }
                    else
                    {
                        Debug.LogWarning(www.error);
                        www.Dispose();
                        yield break;
                    }
                }
            }
        }

        if (s_LoadedAssetBundles.ContainsKey(assetBundleName))
        {
            s_LoadedAssetBundles [assetBundleName].refCount++;

            callback(s_LoadedAssetBundles [assetBundleName].assetBundle);
        }
        else
        {
            // 加载
            //string filename = Path.Combine(Application.persistentDataPath, assetBundleName);
            string filename = Path.Combine(AssetBundleLoader.STREAMING_ASSET_PATH, assetBundleName);
            WWW    www      = new WWW(filename);
            yield return(www);

            if (www.error == null)
            {
                AssetBundle ab = AssetBundle.LoadFromMemory(www.bytes);
                Debug.LogFormat("AssetBundle loaded : {0}", assetBundleName);
                LoadedAssetBundle loadedAssetBundle = new LoadedAssetBundle(ab);
                s_LoadedAssetBundles.Add(assetBundleName, loadedAssetBundle);
                callback(s_LoadedAssetBundles [assetBundleName].assetBundle);
                www.Dispose();
            }
            else
            {
                Debug.LogWarning(www.error);
                www.Dispose();
                callback(null);
            }
        }
    }
 // load assetbuddle Async
 // ref++
 public void LoadAssetBundleAsync(string assetBundleName, LoadAssetBundleAsyncDelegate callback)
 {
     StartCoroutine(_LoadAssetBundleAsync(assetBundleName, callback));
 }