Пример #1
0
    // 加载
    public void Load(List <string> nameList, OnFinished finished)
    {
        if (nameList == null)
        {
            return;
        }

        m_nameList.Clear();

        m_total = 1;
        m_cur   = 1;

        m_finished = finished;

        PreResourceInfo info = null;

        foreach (string name in nameList)
        {
            if (m_nameList.Contains(name))
            {
                continue;
            }

            m_list.TryGetValue(name, out info);

            m_nameList.Add(name);

            // 总共加载资源数
            if (null != info)
            {
                m_total = m_total + info.m_list.Count + 1;
            }
            else
            {
                m_total = m_total + 1;
            }

            Debug.Log("Load----------" + name);
        }

        Debug.Log("m_total:" + m_total);
        if (m_nameList.Count <= 0)
        {
            return;
        }
        GameResPackage.AsyncLoadPackageData data = new GameResPackage.AsyncLoadPackageData();
        MainGame.Singleton.StartCoroutine(Load(m_nameList[0], (int)Type.enPrefab, data));
    }
Пример #2
0
    public void Read()
    {
        TextAsset asset = PoolManager.Singleton.LoadWithoutInstantiate <TextAsset>(GameData.GetConfigPath("PreResourceLoad"));

        BinaryHelper helper = new BinaryHelper(asset.bytes);

        int count = helper.ReadInt();

        Debug.Log("预加载信息 总共" + count + "条");

        for (int i = 0; i < count; i++)
        {
            int effectNum = helper.ReadInt();

            if (effectNum <= 0)
            {
                continue;
            }

            PreResourceInfo info = new PreResourceInfo();

            for (int j = 0; j < effectNum; j++)
            {
                int    type = helper.ReadInt();
                string name = helper.ReadString();
                if (j == 0)
                {
                    info.m_name = name;
                }
                else
                {
                    info.m_list.Add(name, type);
                }
            }
            Debug.Log("名称" + info.m_name + ",info.m_list:" + info.m_list.Count);
            if (m_list.ContainsKey(info.m_name))
            {
                continue;
            }

            m_list.Add(info.m_name, info);
        }
    }
Пример #3
0
    IEnumerator Load(string name, int type, GameResPackage.AsyncLoadPackageData loadData)
    {
        if (type == (int)Type.enEffect)
        {
            GameResPackage.AsyncLoadObjectData data = new GameResPackage.AsyncLoadObjectData();
            IEnumerator e = PoolManager.Singleton.Coroutine_Load(GameData.GetEffectPath(name), data);
            while (true)
            {
                e.MoveNext();
                if (data.m_isFinish)
                {
                    break;
                }
                yield return(e.Current);
            }
            //yield return PoolManager.Singleton.LoadEffectWithPool(name);
        }
        else
        {
            GameResPackage.AsyncLoadObjectData data = new GameResPackage.AsyncLoadObjectData();
            IEnumerator e = PoolManager.Singleton.Coroutine_Load(name, data);
            while (true)
            {
                e.MoveNext();
                if (data.m_isFinish)
                {
                    break;
                }
                yield return(e.Current);
            }
            //yield return PoolManager.Singleton.LoadObjWithoutDir(name, false);
        }

        m_cur++;
        Debug.Log("Load 更新 m_cur" + m_cur + ",name:" + name);
        PreResourceInfo info = null;

        m_list.TryGetValue(name, out info);

        m_tempList.Clear();

        // 如果没有 子列表资源
        if (null == info)
        {
            // 移除
            m_nameList.RemoveAt(0);

            // 所有资源加载完成
            if (m_nameList.Count == 0)
            {
                Debug.Log("所有资源加载完成");
                if (null != m_finished)
                {
                    m_finished();
                }
            }
            else
            {
                //MainGame.Singleton.StartCoroutine(Load(m_nameList[0], (int)Type.enPrefab));
                GameResPackage.AsyncLoadPackageData loadData2 = new GameResPackage.AsyncLoadPackageData();
                IEnumerator e = Load(m_nameList[0], (int)Type.enPrefab, loadData2);
                while (true)
                {
                    e.MoveNext();
                    if (loadData2.m_isFinish)
                    {
                        break;
                    }
                    yield return(e.Current);
                }
            }
        }
        else
        {
            foreach (KeyValuePair <string, int> item in info.m_list)
            {
                m_tempList.Add(item.Key);
            }

            if (m_tempList.Count == 0)
            {
                // 移除
                m_nameList.RemoveAt(0);

                // 所有资源加载完成
                if (m_nameList.Count == 0)
                {
                    Debug.Log("所有资源加载完成");
                    if (null != m_finished)
                    {
                        m_finished();
                    }
                }
                else
                {
                    //MainGame.Singleton.StartCoroutine(Load(m_nameList[0], (int)Type.enPrefab));
                    GameResPackage.AsyncLoadPackageData loadData2 = new GameResPackage.AsyncLoadPackageData();
                    IEnumerator e = Load(m_nameList[0], (int)Type.enPrefab, loadData2);
                    while (true)
                    {
                        e.MoveNext();
                        if (loadData2.m_isFinish)
                        {
                            break;
                        }
                        yield return(e.Current);
                    }
                }
            }
            else
            {
                //MainGame.Singleton.StartCoroutine(LoadInfo(m_tempList[0], (int)Type.enEffect));
                GameResPackage.AsyncLoadPackageData loadData2 = new GameResPackage.AsyncLoadPackageData();
                IEnumerator e = LoadInfo(m_tempList[0], (int)Type.enEffect, loadData2);
                while (true)
                {
                    e.MoveNext();
                    if (loadData2.m_isFinish)
                    {
                        break;
                    }
                    yield return(e.Current);
                }
            }
            loadData.m_isFinish = true;
        }
    }