private void RegisterGameObject(MFUIManager.MFUIID id, string path, string goName, bool preLoad = false)
    {
        if (!m_listResPathToPoolUnit.ContainsKey(path))
        {
            List <MFUIGameObjectPoolUnit> listUnit = new List <MFUIGameObjectPoolUnit>();

            m_listResPathToPoolUnit.Add(path, listUnit);

            MFUIResourceManager.GetSingleton().LoadInstance(id, path, goName, preLoad);
        }
        else
        {
            //Debug.LogError("LoadResouce " + path);
            List <MFUIGameObjectPoolUnit> listUnit = m_listResPathToPoolUnit[path];

            for (int i = 0; i < listUnit.Count; ++i)
            {
                if (listUnit[i].isFree)
                {
                    listUnit[i].isFree        = false;
                    listUnit[i].poolUnit.name = goName;
                    MFUIGameObjectPool.GetSingleton().ResourceLoaded(goName);
                    return;
                }
            }

            MFUIResourceManager.GetSingleton().LoadInstance(id, path, goName, preLoad);
        }
    }
    public void LoadResource(MFUIManager.MFUIID id, string path, System.Action <Object> callBack)
    {
        if (m_dictResNameToObj.ContainsKey(path))
        {
            if (callBack != null)
            {
                callBack(m_dictResNameToObj[path]);
            }
        }
        else
        {
            AssetCacheMgr.GetUIResource(path, (obj) =>
            {
                m_dictResNameToObj[path] = obj;

                if (!m_dictUIIDToObjList.ContainsKey(id))
                {
                    m_dictUIIDToObjList.Add(id, new List <Object>());
                }

                if (!m_dictUIIDToObjList[id].Contains(obj))
                {
                    m_dictUIIDToObjList[id].Add(obj);
                }

                callBack(obj);
            });
        }
    }
    public void ReleasePreLoadResource(MFUIManager.MFUIID id)       //释放预加载的资源
    {
        if (!SystemSwitch.DestroyAllUI)
        {
            return;
        }
        if (!m_dictUIIDToObjList.ContainsKey(id))
        {
            return;
        }


        List <Object> objList = m_dictUIIDToObjList[id];

        foreach (var item in objList)
        {
            foreach (var item1 in m_dictResNameToObj)
            {
                if (item == item1.Value)
                {
                    AssetCacheMgr.ReleaseResourceImmediate(item1.Key);
                    m_dictResNameToObj.Remove(item1.Key);

                    break;
                }
            }
        }

        m_dictUIIDToObjList.Remove(id);
    }
    public void PushOne(Action action, MFUIManager.MFUIID baseUI = MFUIManager.MFUIID.None,
                        uint pri = 0, string debugText = "")
    {
        MFUIQueueUnit unit = new MFUIQueueUnit()
        {
            UnitID       = ++m_nextUnitID,
            act          = action,
            UnitPriority = pri,
            BaseUIID     = baseUI
        };

        if (baseUI == MFUIManager.MFUIID.None)
        {
            MFUIUtils.MFUIDebug(string.Concat(debugText, " Run 1"));
            unit.JustDoIt();
        }
        else if (baseUI == MFUIManager.CurrentUI && !IsLocking)
        {
            MFUIUtils.MFUIDebug(string.Concat(debugText, " Run 2"));
            unit.JustDoIt();
        }
        else
        {
            MFUIUtils.MFUIDebug(string.Concat(debugText, " Run 3"));
            m_listUI.Add(unit);

            m_listUI = m_listUI.OrderByDescending(t => t.UnitPriority).ToList();
        }
    }
    public List <Object> GetPreLoadResource(MFUIManager.MFUIID id)       //获取预加载的资源 null为未加载
    {
        if (m_dictUIIDToObjList.ContainsKey(id))
        {
            return(m_dictUIIDToObjList[id]);
        }

        return(null);
    }
Beispiel #6
0
    void OnUIResourcesLoaded(MFUIManager.MFUIID id)
    {
        if (id != ID)
        {
            return;
        }

        Create();
        m_bIsResourcesLoaded = true;
        //Show();

        if (IsUIDirty())
        {
            Show();
        }
    }
    public void ResourceLoaded(string goName)
    {
        foreach (var item in m_dictGoNameToUIID)
        {
            if (item.Key == goName)
            {
                MFUIManager.MFUIID uiID = item.Value;

                if (m_dictUIIDToUnInstanceObjCount.ContainsKey(uiID))
                {
                    --m_dictUIIDToUnInstanceObjCount[uiID];

                    if (m_dictUIIDToUnInstanceObjCount[uiID] == 0)
                    {
                        if (m_dictUIIDToCallBack.ContainsKey(uiID))
                        {
                            if (m_dictUIIDToCallBack[uiID] != null)
                            {
                                m_dictUIIDToCallBack[uiID]();
                            }
                            else
                            {
                                if (UIResourcesLoadedCB != null)
                                {
                                    UIResourcesLoadedCB(uiID);
                                }
                            }

                            m_dictUIIDToCallBack.Remove(uiID);
                        }
                        else
                        {
                            if (UIResourcesLoadedCB != null)
                            {
                                UIResourcesLoadedCB(uiID);
                            }
                        }
                    }
                }

                m_dictGoNameToUIID.Remove(item.Key);

                break;
            }
        }
    }
    //public void LoadResource(string path,MFUIManager.MFUIID id, GameObject outGO)
    //{
    //    if (m_dictResNameToObj.ContainsKey(path))
    //    {
    //        outGO = (GameObject)(GameObject.Instantiate(m_dictResNameToObj[path]));
    //        MFUIGameObjectPool.GetSingleton().ResourceLoaded(id);
    //    }
    //    else
    //    {
    //        Object obj = Resources.Load(path);

    //        if (obj == null)
    //        {
    //            MFUIUtils.MFUIDebug(string.Concat(path, " Not Found ! "));
    //            return;
    //        }
    //        m_dictResNameToObj.Add(path, obj);

    //        outGO = (GameObject)(GameObject.Instantiate(obj));
    //        MFUIGameObjectPool.GetSingleton().ResourceLoaded(id);
    //    }
    //}

    public void PreLoadResource(string path, MFUIManager.MFUIID id)      //预加载资源存放到UIID->Object Dict & resName->Object
    {
        if (!m_dictUIIDToObjList.ContainsKey(id))
        {
            m_dictUIIDToObjList.Add(id, new List <Object>());
        }

        if (!m_dictResNameToObj.ContainsKey(path))
        {
            AssetCacheMgr.GetUIResource(path, (obj) =>
            {
                m_dictResNameToObj.Add(path, obj);

                //if(!m_dictUIIDToObjList.ContainsKey(id))
                //{
                //    m_dictUIIDToObjList[id].Add(obj);
                //}

                if (!m_dictUIIDToObjList[id].Contains(obj))
                {
                    m_dictUIIDToObjList[id].Add(obj);
                }
            });
        }
        else
        {
            //if (!m_dictUIIDToObjList.ContainsKey(id))
            //{
            //    //m_dictUIIDToObjList[id].Add(m_dictResNameToObj[path]);
            //}

            if (!m_dictUIIDToObjList[id].Contains(m_dictResNameToObj[path]))
            {
                m_dictUIIDToObjList[id].Add(m_dictResNameToObj[path]);
            }
        }
    }
 public void NotRegisterGameObjectList(MFUIManager.MFUIID id)
 {
     UIResourcesLoadedCB(id);
 }
    public void LoadInstance(MFUIManager.MFUIID id, string path, string goName, bool preLoad) //加载资源并实例化
    {
        if (m_dictResNameToObj.ContainsKey(path))
        {
            MFUIGameObjectPoolUnit unit = new MFUIGameObjectPoolUnit();
            unit.isFree        = false;
            unit.poolUnit      = (GameObject)(GameObject.Instantiate(m_dictResNameToObj[path]));
            unit.poolUnit.name = goName;

            if (preLoad)
            {
                unit.isFree = true;
                MFUIUtils.ShowGameObject(false, unit.poolUnit);
            }

            MFUIGameObjectPool.GetSingleton().m_listResPathToPoolUnit[path].Add(unit);

            MFUIGameObjectPool.GetSingleton().ResourceLoaded(goName);
        }
        else
        {
            AssetCacheMgr.GetUIResource(path, (obj) =>
            {
                if (obj == null)
                {
                    MFUIUtils.MFUIDebug(string.Concat(path, " Not Found ! "));
                    return;
                }

                if (m_dictResNameToObj.ContainsKey(path))
                {
                    MFUIUtils.MFUIDebug("Same Key in ResNameToObj Dict , Now Replace It");
                }
                //m_dictResNameToObj.Add(path, obj);
                m_dictResNameToObj[path] = obj;

                if (!m_dictUIIDToObjList.ContainsKey(id))
                {
                    m_dictUIIDToObjList.Add(id, new List <Object>());
                }

                if (!m_dictUIIDToObjList[id].Contains(obj))
                {
                    m_dictUIIDToObjList[id].Add(obj);
                }

                MFUIGameObjectPoolUnit unit = new MFUIGameObjectPoolUnit();
                unit.isFree        = false;
                unit.poolUnit      = (GameObject)(GameObject.Instantiate(m_dictResNameToObj[path]));
                unit.poolUnit.name = goName;

                if (preLoad)
                {
                    unit.isFree = true;
                    MFUIUtils.ShowGameObject(false, unit.poolUnit);
                }

                MFUIGameObjectPool.GetSingleton().m_listResPathToPoolUnit[path].Add(unit);

                MFUIGameObjectPool.GetSingleton().ResourceLoaded(goName);
            });
            //Object obj = Resources.Load(path);

            //if (obj == null)
            //{
            //    MFUIUtils.MFUIDebug(string.Concat(path, " Not Found ! "));
            //    return;
            //}
            //m_dictResNameToObj.Add(path, obj);

            //MFUIGameObjectPoolUnit unit = new MFUIGameObjectPoolUnit();
            //unit.isFree = false;
            //unit.poolUnit = (GameObject)(GameObject.Instantiate(m_dictResNameToObj[path]));
            //unit.poolUnit.name = goName;

            //MFUIGameObjectPool.GetSingleton().m_listResPathToPoolUnit[path].Add(unit);

            //MFUIGameObjectPool.GetSingleton().ResourceLoaded(goName);
        }
    }