Esempio n. 1
0
        /// <summary>
        /// Loads the asset.
        /// </summary>
        /// <param name="data">Data.</param>
        /// <param name="finished">Finished.</param>
        protected void LoadAsset(AssetBundleData data, AssetBundleClient.FinishedDelegate finished)
        {
            object obj = data.assetBundle.LoadAsset(data.objName, data.type) as object;

            if (data.type == typeof(Sprite))
            {
                obj = Util.TextureConvertSprite(obj);
            }

            LogLoadAsset(data, obj);
            finished(obj);
        }
Esempio n. 2
0
        /// <summary>
        /// Loads the asset async.
        /// </summary>
        /// <returns>The asset async.</returns>
        /// <param name="data">Data.</param>
        /// <param name="finished">Finished.</param>
        protected IEnumerator LoadAssetAsync(AssetBundleData data, AssetBundleClient.FinishedDelegate finished)
        {
            AssetBundleRequest request = data.assetBundle.LoadAssetAsync(data.objName, data.type);

            yield return(request);

            object obj = request.asset as object;

            if (data.type == typeof(Sprite))
            {
                obj = Util.TextureConvertSprite(obj);
            }

            LogLoadAsset(data, obj);
            finished(obj);
        }
Esempio n. 3
0
        /// <summary>
        /// Downloads the asset bundle.
        /// </summary>
        /// <param name="data">Data.</param>
        /// <param name="finished">Finished.</param>
        public void DownloadAssetBundle(AssetBundleData data, AssetBundleClient.FinishedDelegate finished = null)
        {
            time = Time.time;

            if (finished == null)
            {
                finished = data.finishedDelegate;
            }

            StartCoroutine(assetBundleClient.DownloadAssetBundle(data.url, data.version, delegate(object obj) {
                LogDownload(data, obj);

                if (finished != null)
                {
                    finished(obj);
                }
            }));
        }
Esempio n. 4
0
        /// <summary>
        /// Loads the asset bundle.
        /// </summary>
        /// <param name="list">List.</param>
        /// <param name="finished">Finished.</param>
        public void LoadAssetBundle(List <AssetBundleData> list, AssetBundleClient.FinishedDelegate finished)
        {
            if (assetBundleData == null)
            {
                assetBundleData = new Dictionary <string, object> ();
            }

            System.Action innerAssetBundle = () => {
                list.RemoveAt(0);
                if (list.Count <= 0)
                {
                    finished(new List <object> (assetBundleData.Values));
                    assetBundleData = null;
                }
                else
                {
                    LoadAssetBundle(list, finished);
                }
            };

            string key = list [0].url + list [0].objName + list [0].type.ToString();

            if (assetBundleData.ContainsKey(key))
            {
                innerAssetBundle();
                return;
            }

            LoadAssetBundle(list [0], delegate(object obj) {
                if (assetBundleData == null)
                {
                    assetBundleData = new Dictionary <string, object> ();
                }

                assetBundleData.Add(key, obj);
                innerAssetBundle();
            });
        }
Esempio n. 5
0
 /// <summary>
 /// Loads the asset bundle.
 /// </summary>
 /// <param name="list">List.</param>
 /// <param name="finished">Finished.</param>
 public void LoadAssetBundle(AssetBundleData[] list, AssetBundleClient.FinishedDelegate finished)
 {
     LoadAssetBundle(new List <AssetBundleData> (list), finished);
 }
Esempio n. 6
0
        /// <summary>
        /// Loads the asset bundle.
        /// </summary>
        /// <param name="data">Data.</param>
        /// <param name="finished">Finished.</param>
        public void LoadAssetBundle(AssetBundleData data, AssetBundleClient.FinishedDelegate finished)
        {
            System.Action InnerLoadAssetBundle = () => {
                System.Action InnerLoadAsset = () => {
                    if (data.objName == string.Empty)
                    {
                        HDebug.LogWarning("Set the object name in the assetbundle.");
                        finished(null);
                        return;
                    }

                    if (data.async)
                    {
                        StartCoroutine(LoadAssetAsync(data, finished));
                    }
                    else
                    {
                        LoadAsset(data, finished);
                    }
                };

                DownloadAssetBundle(data, delegate(object obj) {
                    data.assetBundle = assetBundleClient.GetAssetBundle(data.url, data.version);
                    if (data.assetBundle != null)
                    {
                        InnerLoadAsset();
                    }
                });
            };

//          HDebug.Log (data.assetBundleName + " / " + data.objName);
#if UNITY_EDITOR
            if (SceneManager.Instance.EditorLocalLoadAssetBundle)
            {
                string[] paths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(data.assetBundleName, data.objName);
                string   path  = "";
                if (paths.Length <= 0)
                {
                    paths = AssetDatabase.GetAssetPathsFromAssetBundle(data.assetBundleName);
                    if (paths.Length <= 0)
                    {
                        InnerLoadAssetBundle();
                        return;
                    }

                    string[] files = Directory.GetFiles(paths [0], data.objName + ".*");
                    if (files.Length <= 0)
                    {
                        InnerLoadAssetBundle();
                        return;
                    }

                    path = files [0];
                }
                else
                {
                    path = paths [0];
                }

                object temp = AssetDatabase.LoadMainAssetAtPath(path);
                if (data.type == typeof(Sprite))
                {
                    temp = Util.TextureConvertSprite(temp);
                }

                if (Path.GetFileNameWithoutExtension(path) != data.objName)
                {
                    temp = null;
                }

                LogLoadAsset(data, temp);
                finished(temp);
            }
            else
            {
                InnerLoadAssetBundle();
            }
#else
            InnerLoadAssetBundle();
#endif
        }