Exemple #1
0
    //异步加载
    public static ResourceAsyncLoadingRequest <T> LoadResourceAsync <T>(string path, string name) where T : Object
    {
        ResourceAsyncLoadingRequest <T> request = null;
        T           t           = default(T);
        AssetBundle assetBundle = LoadAssetBundle(path.ToLower() + ".asset", false);

        if (assetBundle != null)
        {
            request = new ResourceAsyncLoadingRequest <T>(assetBundle.LoadAssetAsync <T>(name));
        }
        if (t == null)
        {
            request = new ResourceAsyncLoadingRequest <T>(Resources.LoadAsync <T>(GetResourcePath(path, name)));
        }
        return(request);
    }
Exemple #2
0
    //开启协成进行异步加载
    IEnumerator OnLoad()
    {
        //init
        float progressValue    = 0;
        float progressMaxValue = (preLoad == null) ? widgets.Length : widgets.Length + preLoad.Length;

        loadingDialog.UpdateSlide("数据加载中...", progressValue, progressMaxValue);
        yield return(new WaitForEndOfFrame());

        //load widgets里面的数据
        ResourceAsyncLoadingRequest <GameObject> request = null;

        foreach (var widget in widgets)
        {
            string title = "正在加载" + ResourceManager.GetFileName(widget);
            request = ResourceManager.AsyncLoadResourceUI(widget);
            do
            {
                loadingDialog.UpdateSlide(title, progressValue + request.progress + 1, progressMaxValue);
                yield return(new WaitForEndOfFrame());
            } while (!request.isDone);
            progressValue++;
        }

        //load preload里面的数据
        GameObjectManager manager = GameObjectManager.GetInstance();

        if (preLoad != null)
        {
            foreach (var item in preLoad)
            {
                string title = "正在加载" + ResourceManager.GetFileName(item.name);
                loadingDialog.UpdateSlide(title, progressValue + 1, progressMaxValue);
                yield return(new WaitForEndOfFrame());

                manager.StoreObject(item.getObject(), item.name);
                progressValue++;
            }
        }

        //加载完成
        loadingDialog.UpdateSlide("加载完毕...", progressMaxValue, progressMaxValue);
        yield return(new WaitForEndOfFrame());

        ShowWidget();
        LoadingDialog.Hide(loadingDialog.gameObject);
    }