Пример #1
0
 //加载资源并且回调
 //resName:资源名称、callback:回调函数、isInst:加载完的资源是否实例化、isAutoActive:是否显示
 public void LoadResourceAsyncCallback(string resName, GameResManager.LoadResourceCallback callback, bool isAutoActive = false, bool isInst = true)
 {
     if (m_poolDict.ContainsKey(resName))
     {
         if (isInst)
         {
             callback(m_poolDict[resName].CreateObj(isAutoActive));
         }
         else
         {
             callback(m_poolDict[resName].SourceResource);
         }
     }
     else
     {
         MainGame.Singleton.StartCoroutine(Coroutine_LoadCallback(resName, callback, isAutoActive, isInst));
     }
 }
Пример #2
0
    //协程-加载资源并且回调
    IEnumerator Coroutine_LoadCallback(string resName, GameResManager.LoadResourceCallback callback, bool isAutoActive = false, bool isInst = true)
    {
        UnityEngine.Object obj = null;
        GameResPackage.AsyncLoadObjectData data = new GameResPackage.AsyncLoadObjectData();
        IEnumerator e = GameResManager.Singleton.LoadResourceAsync(resName, data);

        while (true)
        {
            e.MoveNext();
            if (data.m_isFinish)
            {
                break;
            }
            yield return(e.Current);
        }
        if (data.m_obj != null)
        {
            GameObjectPool pool = null;
            if (m_poolDict.ContainsKey(resName))
            {
                pool = m_poolDict[resName];
            }
            else
            {
                pool = new GameObjectPool(data.m_obj, m_poolRoot);
                m_poolDict.Add(resName, pool);
            }

            if (isInst)
            {
                obj = pool.CreateObj(isAutoActive);
            }
            else
            {
                obj = pool.SourceResource;
            }
        }
        callback(obj);
    }