MVC (Model-View-Controller) は、アプリケーションの構造を3つの主要なコンポーネントに分割する設計パターンで、特にWeb開発やデスクトップアプリケーションなどでよく使われます。このパターンを使うことで、アプリケーションのコードが整理され、保守性や再利用性が向上します。
Unityでも、MVCの考え方を使ってコードを整理することができます。
Model(データの管理)
public class PlayerModel {
public int Health { get; set; }
public PlayerModel() {
Health = 100; // 初期HPを100に設定
}
public void TakeDamage(int damage) {
Health -= damage;
if (Health < 0) Health = 0;
}
}
View(UIの表示)
public class PlayerView : MonoBehaviour {
public Text healthText;
public void UpdateHealth(int health) {
healthText.text = "Health: " + health.ToString();
}
}
Controller(動作の制御)
public class PlayerController : MonoBehaviour {
private PlayerModel playerModel;
private PlayerView playerView;
void Start() {
playerModel = new PlayerModel();
playerView = FindObjectOfType<PlayerView>();
UpdateView();
}
void UpdateView() {
playerView.UpdateHealth(playerModel.Health);
}
public void TakeDamage(int damage) {
playerModel.TakeDamage(damage);
UpdateView();
}
}
MVCは、アプリケーションをしっかりと整理し、保守性とテスト性を高めるための設計パターンです。ViewとModelの間のロジックをControllerが担当することで、UIとビジネスロジックを分離し、変更が容易になります。
以下は、MVCパターンを用いたUnityプロジェクトのModel
、View
、Controller
の関係を示した図です。これにより、それぞれのコンポーネントがどのように相互作用するかが視覚的に理解しやすくなります。
graph TD
A[PlayerModel] -->|管理する| B[PlayerController]
B -->|更新| C[PlayerView]
B -->|更新| A
C -->|UI表示| B
C -->|UI表示| A
TakeDamage
を持ち、ダメージを受けた際にHPを減少させます。Text
コンポーネントに表示します。UpdateHealth
を持ち、HPの表示を更新します。Start
メソッドでPlayerModel
とPlayerView
を初期化し、UpdateView
メソッドでビューを更新します。TakeDamage
を持ち、プレイヤーがダメージを受けた際にモデルを更新し、その結果をビューに反映させます。Health
プロパティを持ちます。HPの初期値は100で、TakeDamage
メソッドでHPが減少します。healthText
にプレイヤーのHPを表示します。UpdateHealth
メソッドでHPの表示を更新します。PlayerModel
とPlayerView
を結びつける役割を果たします。Start
メソッドで初期化を行い、UpdateView
メソッドでビューを更新します。TakeDamage
メソッドでモデルを更新し、その結果をビューに反映させます。この図と説明を参考に、MVPパターンの基本的な構造とそれぞれのコンポーネントの役割を理解するのに役立ててください。