/// <summary> /// 创建池 /// </summary> /// <param name="resName"></param> /// <param name="mode"></param> /// <param name="pType"></param> /// <param name="time"></param> private void createPool(string resName, E_PoolMode mode = E_PoolMode.Time, E_PoolType pType = E_PoolType.None, float time = 60) { if (!pools.ContainsKey(resName)) { string resPath = Path.Combine(Define.abPre, resName).ToLower(); BasePool p = PoolFactory.create(resName, resPath, mode, pType, time); pools.Add(resName, p); } }
//获取Sprite public void getObj(string spName, Action <Sprite> callBack, E_PoolMode mode = E_PoolMode.Time, E_PoolType pType = E_PoolType.Atlas, float time = 60) { if (AtlasMgr.hasKey(spName)) { string resName = AtlasMgr.getName(spName); createPool(resName, mode, pType, time); pools[resName].getObj(spName, callBack); } else { Debug.LogError("没有找到bundle名称 spName " + spName); } }
static int resGet(IntPtr L) { try { int count = LuaDLL.lua_gettop(L); if (count == 2) { string arg0 = ToLua.CheckString(L, 1); System.Action <UnityEngine.GameObject> arg1 = (System.Action <UnityEngine.GameObject>)ToLua.CheckDelegate <System.Action <UnityEngine.GameObject> >(L, 2); LuaExtend.resGet(arg0, arg1); return(0); } else if (count == 3) { string arg0 = ToLua.CheckString(L, 1); System.Action <UnityEngine.GameObject> arg1 = (System.Action <UnityEngine.GameObject>)ToLua.CheckDelegate <System.Action <UnityEngine.GameObject> >(L, 2); E_PoolMode arg2 = (E_PoolMode)ToLua.CheckObject(L, 3, typeof(E_PoolMode)); LuaExtend.resGet(arg0, arg1, arg2); return(0); } else if (count == 4) { string arg0 = ToLua.CheckString(L, 1); System.Action <UnityEngine.GameObject> arg1 = (System.Action <UnityEngine.GameObject>)ToLua.CheckDelegate <System.Action <UnityEngine.GameObject> >(L, 2); E_PoolMode arg2 = (E_PoolMode)ToLua.CheckObject(L, 3, typeof(E_PoolMode)); E_PoolType arg3 = (E_PoolType)ToLua.CheckObject(L, 4, typeof(E_PoolType)); LuaExtend.resGet(arg0, arg1, arg2, arg3); return(0); } else if (count == 5) { string arg0 = ToLua.CheckString(L, 1); System.Action <UnityEngine.GameObject> arg1 = (System.Action <UnityEngine.GameObject>)ToLua.CheckDelegate <System.Action <UnityEngine.GameObject> >(L, 2); E_PoolMode arg2 = (E_PoolMode)ToLua.CheckObject(L, 3, typeof(E_PoolMode)); E_PoolType arg3 = (E_PoolType)ToLua.CheckObject(L, 4, typeof(E_PoolType)); float arg4 = (float)LuaDLL.luaL_checknumber(L, 5); LuaExtend.resGet(arg0, arg1, arg2, arg3, arg4); return(0); } else { return(LuaDLL.luaL_throw(L, "invalid arguments to method: LuaExtend.resGet")); } } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
public BasePool(string resName, string resPath, E_PoolMode mode, E_PoolType pType, float time) { this.resName = resName; this.resPath = resPath; pMode = mode; this.pType = pType; lifeTime = time; string poolName = string.Format("[{0}][{1}][{2}]", mode.ToString(), pType.ToString(), resName); GameObject go = new GameObject(poolName); this.poolRoot = go.transform; this.poolRoot.SetParent(PoolMgr.Instance.PoolRoot); this.poolRoot.transform.localPosition = Vector3.zero; initialize(); }
public static BasePool create(string resName, string resPath, E_PoolMode mode, E_PoolType pType, float time) { BasePool p = null; switch (pType) { case E_PoolType.UICache: p = new UICachePool(resName, resPath, mode, pType, time); break; case E_PoolType.Atlas: p = new AtlasPool(resName, resPath, mode, pType, time); break; case E_PoolType.Model: p = new ModelPool(resName, resPath, mode, pType, time); break; default: p = new BasePool(resName, resPath, mode, pType, time); break; } return(p); }
/// <summary> /// 预创建池子 /// 可能在进入场景的时候需要预加载一些gameobject或者load一些bundle /// </summary> /// <param name="resName"></param> /// <param name="callBack"></param> /// <param name="mode"></param> /// <param name="pType"></param> /// <param name="preLoadCount"></param> 初始化个数 /// <param name="time"></param> public void preLoad(string resName, Action <string> callBack, E_PoolMode mode, E_PoolType pType, int preLoadCount = 0, float time = 60) { resName = resName.ToLower(); createPool(resName, mode, pType, time); pools[resName].preLoad(callBack, preLoadCount); }
//获取gameObject public void getObj(string resName, Action <GameObject> callBack, E_PoolMode mode = E_PoolMode.Time, E_PoolType pType = E_PoolType.None, float time = 60) { resName = resName.ToLower(); createPool(resName, mode, pType, time); pools[resName].getObj(callBack); }
public BaseGameObjPool(string resName, string resPath, E_PoolMode mode, E_PoolType pType, float time) : base(resName, resPath, mode, pType, time) { }
public static void setSprite(string spName, Action <Sprite, string> callBack, E_PoolMode mode = E_PoolMode.Time, E_PoolType pType = E_PoolType.Atlas, float time = 60) { PoolMgr.Instance.getObj(spName, callBack, mode, pType, time); }
public static void resGet(string resName, Action <GameObject> callBack, E_PoolMode mode = E_PoolMode.Time, E_PoolType pType = E_PoolType.None, float time = 60) { PoolMgr.Instance.getObj(resName, callBack, mode, pType, time); }
public UICachePool(string resName, string resPath, E_PoolMode mode, E_PoolType pType, float time) : base(resName, resPath, mode, pType, time) { }