Unity 3D Стратегія (Strategy)

2075 / Unity / 2D / 3D / Шаблони / Стратегія (Strategy)

 

Дає можливість підставляти інший алгоритм дій об'єкту

при народженні, чи під час взаємодії з іншими об'єктами

Мотори: бензиновий, електричний чи водневий

Пошкодження: мінус життя, мінус вода чи мінус броня

Рух: стояти, лінійно чи з прискоренням

Рух: на 4х лапах, на 2х лапах чи повзти

Рух: ходити чи плавати

Різні стратегії потрапляння до аеропорту

 

 

public class Player : MonoBehaviour
{
  IMove action;

  private void Start()
  {
    int x = Random.Range(1,4);
    if (x == 1)
    {
      action = new Walk();
    }
    else if (x == 2)
    {
      action = new Swim();
    }
    else
    {
      action = new Run();
    }
  }

  public void FixedUpdate()
  {
    action.Move();  // Swim, Walk or Run
  }
}


 
public interface IMove
{
  void Move();
}


 
public class Swim : IMove
{
  public void Move()
  {
    Debug.Log("Swim");
  }
}



public class Walk : IMove
{
  public void Move()
  {
    Debug.Log("Walk");
  }
}
  


public class Run : IMove
{
  public void Move()
  {
    Debug.Log("Run");
  }
}



 
 
Або передати поведінку як параметр

public void DoAction(IAction action){
  action?.Move()
}

 
Машина, що може змінювати мотор під час руху
Car
IMove
PatrolEngine ElectricEngine HydrogeneEngine