Example #1
0
 public void getObj(Action <GameObject> callBack)
 {
     if (obj != null)
     {
         insObj(callBack);
     }
     else
     {
         addHandler(callBack);
         if (status == E_LoadStatus.Wait)
         {
             status = E_LoadStatus.Loading;
             LoadThread.Instance.StartCoroutine(loadObj());
         }
     }
 }
Example #2
0
    //异步加载
    public IEnumerator doLoad()
    {
        status = E_LoadStatus.Loading;
        AssetBundleCreateRequest req = AssetBundle.LoadFromFileAsync(resPath);

        while (!req.isDone)
        {
            yield return(new WaitForEndOfFrame());
        }
        AssetMgr.add(new PackAsset(resName, resPath, req.assetBundle));
        for (int i = 0; i < handler.Count; i++)
        {
            handler[i].Invoke(resName);
        }
        status = E_LoadStatus.Finish;
    }
Example #3
0
    IEnumerator loadObj()
    {
        AssetBundleRequest req = ab.LoadAssetAsync(mainName);

        while (!req.isDone)
        {
            yield return(new WaitForEndOfFrame());
        }
        this.obj = req.asset;
        status   = E_LoadStatus.Finish;
        if (handler != null)
        {
            for (int i = 0; i < handler.Count; i++)
            {
                insObj(handler[i]);
            }
            handler.Clear();
        }
    }
Example #4
0
    //www load
    IEnumerator wwwLoad()
    {
        //Debug.Log("加载资源" + url);
        status = E_LoadStatus.Loading;
        if (string.IsNullOrEmpty(url))
        {
            status = E_LoadStatus.Fail;
            yield break;
        }
        //是否已经存在ab
        if (AssetMgr.isHave(url))
        {
            for (int i = 0; i < handlerLst.Count; i++)
            {
                handlerLst[i].Invoke(url, true, AssetMgr.getBundle(url));
            }
            status = E_LoadStatus.Finish;
            yield break;
        }

        //加载资源
        AssetBundleCreateRequest abReq = AssetBundle.LoadFromFileAsync(Path.Combine(Application.dataPath, "Res/AssetBundle/" + url + ".assetbundle"));

        do
        {
            if (abReq.assetBundle == null)
            {
                status = E_LoadStatus.Fail;
                yield break;
            }
            yield return(new WaitForEndOfFrame());
        } while (!abReq.isDone);
        AssetMgr.addBundle(url, abReq.assetBundle);
        for (int i = 0; i < handlerLst.Count; i++)
        {
            handlerLst[i].Invoke(url, true, AssetMgr.getBundle(url));
        }
        status = E_LoadStatus.Finish;
    }
Example #5
0
    //编辑器下面使用res load
    IEnumerator onLoad()
    {
        status = E_LoadStatus.Loading;
        if (string.IsNullOrEmpty(url))
        {
            status = E_LoadStatus.Fail;
            yield break;
        }
        ResourceRequest req = Resources.LoadAsync(url);

        while (!req.isDone)
        {
            yield return(new WaitForEndOfFrame());
        }
        UnityEngine.Object obj = req.asset;
        //if (callBack != null)
        //{
        //    GameObject go = GameObject.Instantiate(obj) as GameObject;
        //    //  callBack("res.load加载成功", true, go);
        //}
        status = E_LoadStatus.Finish;
    }