/// <summary> /// 创建对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="name"></param> /// <returns></returns> public T CreateObj <T>(string name) where T : MGFObject { Assert.IsTrue(rcDic.ContainsKey(name)); if (rcDic[name].Count > 0) { IRecycleAble ls = rcDic[name].Dequeue(); return((T)ls); } else { throw new Exception("no obj exist!!!"); } }
private void CreateBullet() { IRecycleAble ra = Bullet.GetComponent <Bullet>(); Queue <IRecycleAble> q = new Queue <IRecycleAble>(); for (int i = 0; i < ra.InitNum(); i++) { Bullet bt = Instantiate(Bullet, m_RecyclePoint.ToVector3(), Quaternion.identity).GetComponent <Bullet>(); bt.IsCollisionAble = false; q.Enqueue(bt); } m_Op.AddNewObj(ra.RecycleName(), q); }
/// <summary> /// 回收对象 /// </summary> /// <param name="name"></param> /// <param name="rc"></param> public void DestoryObj(string name, IRecycleAble rc) { Assert.IsTrue(rc != null); Assert.IsTrue(rcDic.ContainsKey(name)); rcDic[name].Enqueue(rc); }