ゲーム管理において、クラスを参照してイベントを実行する場合があるが、
クラス間の依存性が大きくなる問題がある。
そこで、クラスとクラスの間にインターフェースを設け、依存性を減らそうと思う。
ゲーム管理部
using System.Collections;
using System.Collections.Generic;
public class GameManager
{
Dictionary<string, MessageInterface> list = new Dictionary<string, MessageInterface>();
public void AddMessage(string data, MessageInterface obj)
{
list.Add(data, obj);
}
public void Message(string address, string data1, string data2)
{
if (list.ContainsKey(address))
{
list[address].Message(data1, data2);
}
else Debug.Log("送信する相手がいません メッセージを破棄します");
}
}
public interface MessageInterface
{
void Message(string data1, string data2);
}
受信側
using System.Collections;
using System.Collections.Generic;
public class Player3 : MessageInterface
{
public GameManager gm;
int hp = 100;
void Start()
{
gm.AddMessage("player", this);
}
void MessageInterface.Message(string data1, string data2)
{
if (data1 == "damage")
{
hp -= int.Parse(data2);
}
}
}
送信側
public class Enemy : MessageInterface
{
public GameManager gm;
void Attack()
{
//プレイヤーに30のダメージを与える
gm.Message("player", "damage", "30");
}
}