Пример #1
0
    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
    }
Пример #2
0
    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);
        }
    }
Пример #3
0
 public void AddLoadBundleNode(LoadBundleNode node)
 {
     loadBundle_queue_.Enqueue(node);
 }