public static void LoadAsync(string name, OnLoad onload) { #if ASSETBUNDLE name = name.ToLower(); Object asset = GetAsset(name); if (asset != null) { if (onload != null) { onload(asset); } } else { string bundle_name = name; BundleNode bundle_node; if (bundles_.TryGetValue(bundle_name, out bundle_node)) { asset = bundle_node.LoadAsset(string.Empty); if (onload != null) { onload(asset); } } else { LoadBundleNode load_node = new LoadBundleNode(bundle_name, (obj) => { bundle_node = bundles_[bundle_name]; AddAsset(name, bundle_node, obj); if (onload != null) { onload(obj); } }); GlobalUpdate.Instance.AddLoadBundleNode(load_node); } } #else Object obj = Resources.Load(name); if (onload != null) { onload(obj); } #endif }
IEnumerator LoadBundleCoroutine() { while (true) { if (loadBundle_queue_.Count > 0) { LoadBundleNode node = loadBundle_queue_.Dequeue(); AssetBundle bundle = ResLoader.GetAssetBundle(node.bundle_name_); if (bundle == null) { AssetBundleCreateRequest bundle_request = ResLoader.LoadBundleAsync(node.bundle_name_); yield return(bundle_request); if (bundle_request != null) { bundle = bundle_request.assetBundle; #if DEBUG bundle.name = "async_" + node.bundle_name_; #endif ResLoader.AddBundleNode(bundle, node.bundle_name_); } } if (bundle != null) { AssetBundleRequest asest_request = ResLoader.LoadAssetAsync(bundle); yield return(asest_request); if (asest_request != null) { if (node.onload_ != null) { node.onload_(asest_request.asset); } } } } yield return(null); } }
public void AddLoadBundleNode(LoadBundleNode node) { loadBundle_queue_.Enqueue(node); }