Ejemplo n.º 1
0
    private IEnumerator IeLoadAsset(string resName, LoadderCallBack callBack, LoadderData data)
    {
        var boudleName = data == null ? resName : string.IsNullOrEmpty(data.assetBoudleName) ? resName : data.assetBoudleName;

        if (_objDic.ContainsKey(boudleName))
        {
            var resNames = resName.Split('/');
            if (callBack != null)
            {
                callBack(resName, _objDic[boudleName].LoadAsset(resNames[resNames.Length - 1]), data);
            }
            yield break;
        }

        resManagerState = ResManagerState.EAsyncLoadRes;
        if (_wwwList.Contains(boudleName))
        {
            yield return(new WaitWhile(() => _wwwList.Contains(boudleName)));

            if (_objDic.ContainsKey(boudleName))
            {
                var resNames = resName.Split('/');
                if (callBack != null)
                {
                    callBack(resName, _objDic[boudleName].LoadAsset(resNames[resNames.Length - 1]), data);
                }
                resManagerState = ResManagerState.EFree;
                yield break;
            }
        }

        _wwwList.Add(boudleName);

        yield return(LoadAllDependencies(boudleName));

        var objwww = WWW.LoadFromCacheOrDownload(string.Format("file://{0}{1}.unity3d", ResManager.LocalAssetbundlePath, boudleName), _manifest.GetAssetBundleHash(string.Format("{0}.unity3d", boudleName)), 0);

        yield return(objwww);

        if (!string.IsNullOrEmpty(objwww.error))
        {
            Debug.Log(objwww.error);
            if (callBack != null)
            {
                callBack(resName, null, data);
            }
        }
        else
        {
            _objDic.Add(boudleName, objwww.assetBundle);
            var resNames = resName.Split('/');
            var obj      = objwww.assetBundle.LoadAsset(resNames[resNames.Length - 1]);
            if (callBack != null)
            {
                callBack(resName, obj, data);
            }
        }
        _wwwList.Remove(boudleName);
        resManagerState = ResManagerState.EFree;
    }
Ejemplo n.º 2
0
    public void LoadResources(string resName, LoadderCallBack callBack, LoadderData data)
    {
        if (string.IsNullOrEmpty(resName))
        {
            callBack(null, null, data);
            return;
        }

        object obj = Resources.Load(resName);

        callBack(resName, obj, data);
    }
Ejemplo n.º 3
0
    public void LoadAsset(string resName, LoadderCallBack callBack, LoadderData data)
    {
        if (string.IsNullOrEmpty(resName))
        {
            callBack(null, null, data);
            return;
        }

        if (UseAssetBoudle)
        {
            Game.Instance.StartCoroutine(IeLoadAsset(resName, callBack, data));
        }
        else
        {
            object obj = Resources.Load(resName);
            callBack(resName, obj, data);
        }
    }
Ejemplo n.º 4
0
    public void LoadResources(string resName, LoadderCallBack <GameObject> LoadCallBack, LoadderData data)
    {
        if (LoadCallBack == null)
        {
            return;
        }

        if (string.IsNullOrEmpty(resName))
        {
            LoadCallBack(null, null, data);
        }

        var resPath = string.Format("prefabs/ui/{0}", resName);

        if (ResPoolManager.Instance.HasSpawn(resPath))
        {
            ResPoolManager.Instance.LoadAsset(resPath, LoadCallBack, data);
        }
        else
        {
            var loadData = new UIResLoadderData(LoadCallBack, data);
            ResManager.Instance.LoadResources(resPath, OnLoadCallBack, loadData);
        }
    }
Ejemplo n.º 5
0
 public UIResLoadderData(LoadderCallBack <GameObject> loadCallBack, LoadderData data)
 {
     LoadCallBack = loadCallBack;
     this.data    = data;
 }
Ejemplo n.º 6
0
 public void LoadAsset(string resName, LoadderCallBack <GameObject> LoadCallBack, LoadderData data)
 {
     LoadCallBack(resName, SpawnPoolDic[resName].GetSpwan(), data);
 }