예제 #1
0
        public static string ConvertResToABPath(string path)
        {
            path = string.Format(AssetBase.basePath, path.Replace("\\", "/"));
            string assetBundleName = AssetBundleAssetRecord.GetAssetBundleName(path);

            return(assetBundleName);
        }
예제 #2
0
        public void UnloadAsset(string path)
        {
            path = path.Replace("\\", "/");
            path = string.Format(basePath, path.Replace("\\", "/"));
            string assetBundleName = AssetBundleAssetRecord.GetAssetBundleName(path);

            ABsManager.Unload(assetBundleName);
        }
예제 #3
0
 public static void Destroy()
 {
     if (m_instance != null)
     {
         if (m_instance.m_dicAssetRecord != null)
         {
             m_instance.m_dicAssetRecord.Clear();
             m_instance = null;
         }
     }
 }
예제 #4
0
            public AsyncABLoader(string path)
            {
                orgPath         = path;
                path            = string.Format("assets/resources/{0}", path.Replace("\\", "/"));
                this.path       = path;
                assetBundleName = AssetBundleAssetRecord.GetAssetBundleName(path);

                if (assetBundleName != null && assetBundleName != "")
                {
                    this.assetBundleName = assetBundleName.ToLower();
                    AssetScene.Current.StartCoroutine(ABsManager.LoadAsync(assetBundleName));
                }
            }
예제 #5
0
            public GameObject Generate()
            {
                string assetName = string.Format("{0}", AssetBundleAssetRecord.GetAssetName(path));

                UnityEngine.Object obj = m_instance.loadedAssetBundles[assetBundleName].GetRes(assetName);

                if (obj != null)
                {
                    GameObject go = GameObject.Instantiate(obj) as GameObject;
                    AssetBundleUser.GetInstance().SetBundle(assetBundleName, go);
                    return(go);
                }
                return(null);
            }
예제 #6
0
        public Object LoadAsset(string path)
        {
            Object obj = null;

            path = string.Format(basePath, path.Replace("\\", "/"));
            string assetBundleName = AssetBundleAssetRecord.GetAssetBundleName(path);

            if (!string.IsNullOrEmpty(assetBundleName))
            {
                string assetName = string.Format("{0}", AssetBundleAssetRecord.GetAssetName(path));
                ABsManager.Load(assetBundleName);
                obj = ABsManager.Instance.loadedAssetBundles[assetBundleName].GetRes(assetName);
            }


            return(obj);
        }
예제 #7
0
        public IEnumerator LoadAssetAsync(string path, System.Action <Object> callback)
        {
            path = string.Format(basePath, path.Replace("\\", "/"));
            string assetBundleName = AssetBundleAssetRecord.GetAssetBundleName(path);

            ObjectRequest or = FindObjectRequest(path);

            if (or == null)
            {
                or = new ObjectRequest(path, callback);
                ors.Add(or);

                yield return(ABsManager.LoadAsync(assetBundleName));

                string assetName = string.Format("{0}", AssetBundleAssetRecord.GetAssetName(path));
                //yield return ABsManager.Find(assetBundleName).LoadFromMemeroyAsync();
                Object obj = ABsManager.Find(assetBundleName).GetRes(assetName);

                if (or == null)
                {
                    Debug.LogError("or is removed");
                }
                ;

                if (or.callbacks != null)
                {
                    Debug.Log("or callback count = " + or.callbacks.Count + "  " + or.path);
                    foreach (var k in or.callbacks)
                    {
                        k(obj);
                    }
                    or.callbacks.Clear();
                }
                ors.Remove(or);
            }
            else
            {
                or.callbacks.Add(callback);
            }



            //if (callback != null) callback(obj);
        }
예제 #8
0
 void OnDestroy()
 {
     AssetBundleAssetRecord.Destroy();
     m_instance = null;
     inited     = false;
 }