✅ Паттерн «Состояние» (State): Умное управление поведением
Что это?
Паттерн, который позволяет объекту изменять свое поведение в зависимости от внутреннего состояния. Как режимы работы устройства.
Зачем?
• Избегать гигантских конструкций
• Четко разделять логику разных состояний
• Упрощать добавление новых состояний
Как работает?
1. Создаешь интерфейс состояния (IState) с методами Enter(), Update(), Exit()
2. Реализуешь конкретные состояния (например, IdleState, MoveState, AttackState)
3. Создаешь класс StateMachine, который управляет текущим состоянием
Пример: Простая машина состояний врага
Важно!
• Каждое состояние отвечает только за свою логику
• Переход между состояниями происходит в одном месте (StateMachine)
• Отлично сочетается с другими паттернами (например, Command)
💡 Применяй для: ИИ врагов, анимаций, управления игроком (бег, прыжок, атака).
#Unity #CSharp #Patterns #StateMachine #GameDev
Что это?
Паттерн, который позволяет объекту изменять свое поведение в зависимости от внутреннего состояния. Как режимы работы устройства.
Зачем?
• Избегать гигантских конструкций
switch или if-else • Четко разделять логику разных состояний
• Упрощать добавление новых состояний
Как работает?
1. Создаешь интерфейс состояния (IState) с методами Enter(), Update(), Exit()
2. Реализуешь конкретные состояния (например, IdleState, MoveState, AttackState)
3. Создаешь класс StateMachine, который управляет текущим состоянием
Пример: Простая машина состояний врага
// 1. Интерфейс состояния
public interface IEnemyState
{
void Enter();
void Update();
void Exit();
}
// 2. Конкретное состояние - Преследование
public class ChaseState : IEnemyState
{
public void Enter() { Debug.Log("Начинаю преследование!"); }
public void Update() { /* Логика движения к игроку */ }
public void Exit() { Debug.Log("Прекращаю преследование."); }
}
// 3. Машина состояний
public class EnemyAI : MonoBehaviour
{
IEnemyState currentState;
public void ChangeState(IEnemyState newState)
{
currentState?.Exit();
currentState = newState;
currentState?.Enter();
}
void Update()
{
currentState?.Update();
}
}
// Использование:
EnemyAI ai = GetComponent<EnemyAI>();
ai.ChangeState(new ChaseState());
Важно!
• Каждое состояние отвечает только за свою логику
• Переход между состояниями происходит в одном месте (StateMachine)
• Отлично сочетается с другими паттернами (например, Command)
💡 Применяй для: ИИ врагов, анимаций, управления игроком (бег, прыжок, атака).
#Unity #CSharp #Patterns #StateMachine #GameDev
❤6🎄4🤯2
✅ Паттерн «Состояние» (State): Умное управление поведением
Что это?
Паттерн, который позволяет объекту изменять свое поведение в зависимости от внутреннего состояния. Как режимы работы устройства.
Зачем?
• Избегать гигантских конструкций
• Четко разделять логику разных состояний
• Упрощать добавление новых состояний
Как работает?
1. Создаешь интерфейс состояния (IState) с методами Enter(), Update(), Exit()
2. Реализуешь конкретные состояния (например, IdleState, MoveState, AttackState)
3. Создаешь класс StateMachine, который управляет текущим состоянием
Пример: Простая машина состояний врага
Важно!
• Каждое состояние отвечает только за свою логику
• Переход между состояниями происходит в одном месте (StateMachine)
• Отлично сочетается с другими паттернами (например, Command)
💡 Применяй для: ИИ врагов, анимаций, управления игроком (бег, прыжок, атака).
#Unity #CSharp #Patterns #StateMachine #GameDev
Что это?
Паттерн, который позволяет объекту изменять свое поведение в зависимости от внутреннего состояния. Как режимы работы устройства.
Зачем?
• Избегать гигантских конструкций
switch или if-else • Четко разделять логику разных состояний
• Упрощать добавление новых состояний
Как работает?
1. Создаешь интерфейс состояния (IState) с методами Enter(), Update(), Exit()
2. Реализуешь конкретные состояния (например, IdleState, MoveState, AttackState)
3. Создаешь класс StateMachine, который управляет текущим состоянием
Пример: Простая машина состояний врага
// 1. Интерфейс состояния
public interface IEnemyState
{
void Enter();
void Update();
void Exit();
}
// 2. Конкретное состояние - Преследование
public class ChaseState : IEnemyState
{
public void Enter() { Debug.Log("Начинаю преследование!"); }
public void Update() { /* Логика движения к игроку */ }
public void Exit() { Debug.Log("Прекращаю преследование."); }
}
// 3. Машина состояний
public class EnemyAI : MonoBehaviour
{
IEnemyState currentState;
public void ChangeState(IEnemyState newState)
{
currentState?.Exit();
currentState = newState;
currentState?.Enter();
}
void Update()
{
currentState?.Update();
}
}
// Использование:
EnemyAI ai = GetComponent<EnemyAI>();
ai.ChangeState(new ChaseState());
Важно!
• Каждое состояние отвечает только за свою логику
• Переход между состояниями происходит в одном месте (StateMachine)
• Отлично сочетается с другими паттернами (например, Command)
💡 Применяй для: ИИ врагов, анимаций, управления игроком (бег, прыжок, атака).
#Unity #CSharp #Patterns #StateMachine #GameDev
🎄4 3 2