Beispiel #1
0
        private Unit CreateUnit(UnitConfig unitConfig, Vector3 position, UnitsManager unitsManager, ProjectilesManager projectilesManager)
        {
            Rigidbody instance;

            if (unitConfig.OnlyOne)
            {
                instance = Instantiate(unitConfig.Prefab, _unitsRoot);
            }
            else
            {
                if (!_unitPools.TryGetValue(unitConfig, out var pool))
                {
                    pool = new GameObjectPool <Rigidbody>(_unitsRoot, unitConfig.Prefab, 5);
                    _unitPools.Add(unitConfig, pool);
                }

                instance = pool.GetObject();
            }

            instance.transform.position = position;
            instance.gameObject.SetActive(true);

            var unit = unitConfig.CreateUnit(instance, unitsManager, projectilesManager);

            unit.Config = unitConfig;
            return(unit);
        }