Unity 3D Інтерфейс

2075 / Unity / 2D / 3D / Шаблони / Інтерфейс

 

Інтерфейс формує взаємодію між класами через публічні функції

Коли скрипти різні (успадкування не підходить), але мають спільну поведінку

 

public interface IMove
{
  void Move();
}



public class Player : MonoBehaviour 
{
  IMove action;

  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();
    }
  }

  void FixedUpdate()
  {
    action.Move();
  }
}



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



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



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




 

Хитрощі
obj.GetComponent<IMove>().move();