Размещение значений при наследовании
Всем привет :) В игре будет 2 спавнера - один для противников, другой для бонусов. Создала абстрактный класс BaseSpawner, от которого наследуются EnemySpawner и BonusSpawener. У Enemy скорость изменяется пропорционально (не превышая максимального значения) счету, а у Bonus скорость постоянна.
public abstract class BaseSpawner : MonoBehaviour
{
[SerializeField] GameObject prefab;
private List<float> roads;
private float roadWidth;
private GameObject newUnit;
private void Start()
{
roadWidth = Config.RoadWidth;
roads = new List<float> { -roadWidth, 0, roadWidth };
}
protected abstract float GetDelay();
protected abstract float GetSpeed();
private void SetRandomPosition()
{
float randomRoad = roads[new System.Random().Next(roads.Count)];
Vector2 newPosition = new Vector2(randomRoad, transform.position.y);
transform.position = newPosition;
}
IEnumerator GetUnit()
{
while (true)
{
yield return new WaitForSeconds(GetDelay());
SetRandomPosition();
newUnit = Instantiate(prefab, transform.position, Quaternion.identity);
newUnit.GetComponent<BaseUnit>().SetSpeed(GetSpeed());
}
}
}
public class EnemySpawner : BaseSpawner
{
protected override float GetDelay()
{
throw new System.NotImplementedException();
}
protected override float GetSpeed()
{
throw new System.NotImplementedException();
}
}
У бонусов будет аналогичный код
Все значения находятся в Config
public class Config : MonoBehaviour
{
public static float RoadWidth = 1.5f;
public static float PlayerSpeed = 0.2f;
public static float EnemyMinSpeed = 4f;
public static float EnemyMaxSpeed = 18f;
public static float BonusSpeed = 4f;
}
Вопрос в следующем - где должны инициализироваться значения скорости, чтобы их можно было получить из GetSpeed класса EnemySpawner?
Всем спасибо за помощь :) Хорошего дня :)