Example #1
0
    /// <summary>
    /// 预加载
    /// </summary>
    private void DoPreLoadSceneUI()
    {
        int max = 0;

        table.UIResourceDataBase tempRes = null;
        //1、获取预加载资源列表
        List <uint> needPreLoadRes = new List <uint>();
        List <table.UIResourceDataBase> resList = GameTableManager.Instance.GetTableList <table.UIResourceDataBase>();

        if (null != resList)
        {
            for (int i = 0, maxR = resList.Count; i < maxR; i++)
            {
                tempRes = resList[i];
                if (IsPreLoadMaskMatch(tempRes.resPreloadMask))
                {
                    needPreLoadRes.Add(tempRes.ID);
                }
            }
            max = needPreLoadRes.Count;
        }
        //取消预加载
        //max = 0;
        //2、执行预加载
        if (max == 0)
        {
            OnResPreLoad(1f);
            return;
        }
        int            loadCount = 0;
        AssetLoadFinsh callBack  = (resObj, param1, param2, parm3) =>
        {
            uint resID = 0;
            if (null != param1 && param1 is uint)
            {
                resID = (uint)param1;
                if (needPreLoadRes.Contains(resID))
                {
                    loadCount++;
                    OnResPreLoad((float)loadCount / max);
                }
            }
            if (null == resObj)
            {
                Engine.Utility.Log.Error("UIManager->Preload AssetError ResID:{0}", resID);
            }
        };

        for (int i = 0; i < max; i++)
        {
            tempRes = GameTableManager.Instance.GetTableItem <table.UIResourceDataBase>(needPreLoadRes[i]);
            if (null == tempRes)
            {
                callBack.Invoke(null, needPreLoadRes[i], null, null);
                continue;
            }
            DataManager.Manager <CMAssetBundleLoaderMgr>().CreateAssetAsyn(true, tempRes.assetbundlePath, tempRes.resRelativePath, callBack, tempRes.ID);
        }
    }
Example #2
0
    /// <summary>
    /// 获取资源(异步)
    /// </summary>
    /// <param name="abPath"></param>
    /// <param name="assetName"></param>
    /// <param name="loadFinish"></param>
    /// <param name="param"></param>
    public void CreateAssetAsyn(bool preLoad, string abPath, string assetName, AssetLoadFinsh loadFinish, object param1 = null, object param2 = null, object param3 = null)
    {
        CMAssetBundle cmAB = null;

        if (!m_dicAssetBundleDatas.TryGetValue(abPath, out cmAB))
        {
            cmAB = CMAssetBundle.Create(abPath);
            m_dicAssetBundleDatas.Add(abPath, cmAB);
        }
        cmAB.CreateAssetAsyn(preLoad, assetName, loadFinish, param1, param2, param3);
        LoadAssetBundleAsyn(cmAB.ABPath);
    }
Example #3
0
    /// <summary>
    /// 添加资源
    /// </summary>
    /// <param name="callback"></param>
    private void AddAssetLoadComplteDlg(string assetName, AssetLoadFinsh callback, object param1 = null, object param2 = null, object param3 = null)
    {
        CMAssetLoadFinsh callbackData = new CMAssetLoadFinsh()
        {
            AssetName = assetName,
            FinshDlg  = callback,
            Param1    = param1,
            Param2    = param2,
            Param3    = param3,
        };
        List <CMAssetLoadFinsh> datas = null;

        if (!m_dicLoadAssetDlg.TryGetValue(callbackData.AssetName, out datas))
        {
            datas = new List <CMAssetLoadFinsh>();
            m_dicLoadAssetDlg.Add(callbackData.AssetName, datas);
        }
        datas.Add(callbackData);
    }
Example #4
0
    /// <summary>
    /// 穿件资源异步
    /// </summary>
    ///<param name="preLoad">是否为预加载</param>
    /// <param name="assetName"></param>
    /// <param name="callback"></param>
    /// <param name="param"></param>
    public void CreateAssetAsyn(bool preLoad, string assetName, AssetLoadFinsh callback, object param1 = null, object param2 = null, object param3 = null)
    {
        AddAssetLoadComplteDlg(assetName, callback, param1, param2, param3);

        if (!preLoad)
        {
            ReferenceAssset(assetName);
        }

        if (IsDone())
        {
            if (IsAssetReady(assetName))
            {
                InvokeAssetLoadDlg(assetName);
            }
            else
            {
                CheckCacheToLoadAsset();
            }
        }
    }