Ejemplo n.º 1
0
 public static void FreeGo(CacheItem ir)
 {
     if (ir != null)
     {
         CacheItems v = GetCacheItem(ir.ResType, ir.ResName);
         v.SetCacheData(ir);
     }
 }
Ejemplo n.º 2
0
    /// <summary>
    /// 预加载的加载接口
    /// </summary>
    /// <param name="ResType"></param>
    /// <param name="ResName"></param>
    /// <param name="Count"></param>
    public static IEnumerator LoadGoCahce(string ResType, string ResName, int Count)
    {
        //包含此对象池,且有对象
        CacheItems v = PoolManager.GetCacheItem(ResType, ResName);

        if (v.Count > 0)
        {
            yield return(v.CopyInstantiate(Count));
        }
        else
        {
            // 为同步操作
            GameObject prefab = null;
            ResourceManger.LoadPrefab(ResType, ResName, false, true, (g) => {
                prefab = g as GameObject;
            });
            // 执行分帧加载。
            if (prefab != null)
            {
                yield return(Yielders.EndOfFrame);

                GameObject go = GameObject.Instantiate(prefab);
                // 设置父亲结点
                if (null != go)
                {
                    CacheItem recycle = go.GetComponent <CacheItem>();
                    if (recycle == null)
                    {
                        recycle = go.AddComponent <CacheItem>();
                    }
                    recycle.SetCacheKey(ResType, ResName);
                    v.SetCacheData(recycle);
                    yield return(Yielders.EndOfFrame);

                    yield return(v.CopyInstantiate(Count));
                }
            }
        }
    }