IEnumerator LoadResourcesAssetData(ResourceInfo info, string name)
    {
        var path    = CreateResourcesDirectoryPath(info.path);
        var request = Resources.LoadAsync(Path.Combine(path, Path.GetFileNameWithoutExtension(name)));

        yield return(request);

        info.asset = request.asset;

        info.CallLoadEnd();
    }
    IEnumerator LoadAssetBundleAssetData(ResourceInfo info, string name)
    {
        var assetBundleInfo = info.assetBundleInfo;

        yield return(LoadAssetBundleBase(assetBundleInfo, info.path));

        var request = assetBundleInfo.ab.LoadAssetAsync <UnityEngine.Object>(name);

        yield return(request);

        info.asset = request.asset;

        info.CallLoadEnd();
        assetBundleInfo.locked = false;
    }
    IEnumerator LoadResourcesAssetsData(ResourceInfo info, string[] names)
    {
        var path = CreateResourcesDirectoryPath(info.path);

        info.assets = new UnityEngine.Object[names.Length];
        var cl = new CoroutineList();

        for (int i = 0; i < names.Length; ++i)
        {
            var co = LoadResourcesAssetData(
                Path.Combine(path, Path.GetFileNameWithoutExtension(names[i])),
                info.assets, i);
            cl.Add(co);
        }
        yield return(cl.WaitForCoroutine(this));

        info.CallLoadEnd();
    }
    IEnumerator LoadAssetBundleAssetsData(ResourceInfo info, string[] names)
    {
        var assetBundleInfo = info.assetBundleInfo;

        yield return(LoadAssetBundleBase(assetBundleInfo, info.path));

        info.assets = new UnityEngine.Object[names.Length];
        var cl = new CoroutineList();

        for (int i = 0; i < names.Length; ++i)
        {
            cl.Add(LoadAssetBundleAssetsData(assetBundleInfo.ab, names[i], info.assets, i));
        }
        yield return(cl.WaitForCoroutine(this));

        info.CallLoadEnd();
        assetBundleInfo.locked = false;
    }