示例#1
0
    private IEnumerator LoadResAsync <T>()
        where T : Object
    {
        while (true)
        {
            ResLoadAsyncData data = GetNeedLoadResData();
            if (data != null)
            {
                ResourceRequest request = Resources.LoadAsync <T>(data.m_path);

                while (!request.isDone)
                {
                    yield return(new WaitForEndOfFrame());
                }

                if (data.m_action != null)
                {
                    data.m_action(request.asset as T);
                }
            }
            else
            {
                yield return(new WaitForEndOfFrame());
            }
        }
    }
示例#2
0
    private ResLoadAsyncData GetNeedLoadResData()
    {
        if (m_resPathList.Count > 0)
        {
            ResLoadAsyncData data = m_resPathList[0];
            m_resPathList.RemoveAt(0);
            return(data);
        }

        return(null);
    }
示例#3
0
    private ResLoadAsyncData GetAsyncData(string path, DLoadResourcesCompete action)
    {
        ResLoadAsyncData data = null;

        if (m_cacheResPathList.Count > 0)
        {
            data = m_cacheResPathList[0];
            m_cacheResPathList.RemoveAt(0);
        }
        else
        {
            data = new ResLoadAsyncData();
        }
        data.m_path   = path;
        data.m_action = action;
        return(data);
    }
示例#4
0
    public void LoadResourcesAsync <T>(EResourceType resType, string name, DLoadResourcesCompete action)
        where T : Object
    {
        string path = GameResFunc.GetResPath(resType, name);

        if (string.IsNullOrEmpty(path))
        {
            Log(ELogType.Error, string.Format("res path is null !!!!!      resType : {0}", resType));
            return;
        }

        ResLoadAsyncData data = GetAsyncData(path, action);

        m_resPathList.Add(data);
        if (m_asyncEnd)
        {
            StartCoroutine(LoadResAsync <T>());
        }
    }