Example #1
0
    /// <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);
    }
Example #2
0
        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);
        }
Example #3
0
 public void ReturnToPool(BaseBulletController bullet)
 {
     bullet.ReturnToPool(_poolRoot);
 }