public IEnumerator LoadAsync(string filename, Action <AssetBundle> onFinish)
        {
            string bundleName = AssetsNameToBundleName(filename);

            if (dicAssetBundle.ContainsKey(bundleName))
            {
                yield break;
            }

            string[] dependence = manifest.GetAllDependencies(bundleName);
            var      wait       = new WaitHandle(dependence.Length);

            for (int i = 0; i < dependence.Length; ++i)
            {
                int index = i;
                asynsHandler.StartCoroutine(LoadInternalAsync(dependence[index], (ab) => { wait.Finish(index); }));
            }

            yield return(new WaitUntil(wait.Check));

            yield return(asynsHandler.StartCoroutine(LoadInternalAsync(bundleName, onFinish)));
        }