Чтобы не было десяти миллионов if else, можно использовать Switch+enum. Рассмотрим на примере состояний:
switch (state)//что рассматриваем
{
default:
case State.Idle:
//если idle, то ничего не делаем
break;//завершаем
case State.Roaming:
roamingTime -= Time.deltaTime;
if (roamingTime < 0)
{
Roaming();
roamingTime = roamingTimerMax;
}
//ecли roaming выполняем действие
break;
case State.Attack:
navMeshAgent.SetDestination(player_pos.position);
break;
}
Важно!
это не полная замена if/else, а частный случай для оптимизации при одномерном выборе.
Таким образом можно рассматривать состояния более оптимизированным способом. Попробуйте внедрить это в свой проект и код будет надежнее(компилятор предупредит о возможных проблемах), удобней(можно проще добавить новые состояния) и читаемее.
Akrus Unity