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))); }