public IEnumerator AssetFromBundle(string bundleAssetName)
    {
        bool containKey = bundleDic.ContainsKey(bundleAssetName);

        if (containKey)
        {
            yield break;
        }

        string path = string.Format("{1}/{0}", bundleAssetName, Application.streamingAssetsPath);

        WWW dataWWW = new WWW(path);

        yield return(dataWWW);

        if (dataWWW.error != null)
        {
            yield break;
        }

        if (dataWWW.isDone)
        {
            AssetBundle           assetBundle     = AssetBundle.LoadFromMemory(dataWWW.bytes);
            BundleReferenceStruct referenceStruct = BundleReferenceStruct.CreateBundleStruct();
            referenceStruct.InitBundle(assetBundle);
            bundleDic.Add(bundleAssetName, referenceStruct);
        }
        yield return(null);
    }
    public static BundleReferenceStruct CreateBundleStruct()
    {
        BundleReferenceStruct referenceStruct = new BundleReferenceStruct()
        {
            loadedBundle = null, referenceCount = 0
        };

        return(referenceStruct);
    }