/// <summary> /// 创建一个新的子弹 /// </summary> private BaseBulletController CreateBulletUtil(BulletType type, Transform parent, Vector3 pos, int power) { //根据子弹类型 生成数据 BaseBulletInfo data = BulletInfo.Instance.GetBulletData(type, power); GameObject bulletGo = ResourcesLoadManager.LoadBulletResources <GameObject>(data.bulletResName); GameObject bullet = GameObject.Instantiate <GameObject>(bulletGo); bullet.transform.SetParent(GameController.Instance.BulletGroup); BaseBulletController bulletController = bullet.AddComponent <BaseBulletController>(); bulletController.InitBulletData(parent, bullet.transform, pos, data); return(bulletController); }
private BaseBulletController GetBullet(HashSet <BaseBulletController> bullets) { var bullet = bullets.FirstOrDefault(a => !a.IsActive); if (bullet == null) { for (int i = 0; i < _poolCapacity; i++) { var newBullet = new BaseBulletController(_bulletData, _factory); newBullet.ID = _id++; ReturnToPool(newBullet); bullets.Add(newBullet); } GetBullet(bullets); } bullet = bullets.FirstOrDefault(a => !a.IsActive); return(bullet); }
public void ReturnToPool(BaseBulletController bullet) { bullet.ReturnToPool(_poolRoot); }