C# Interfaces
https://learn.unity.com/tutorial/c-interfaces?language=en
前半はインターフェースのプロパティについて
後半はジェネリクスの話,インターフェース側でメソッドの引数をTにするとそれを継承して使う側は柔軟にint型にしたりGameObject型にしたりできて柔軟性があるよという話。
C# Action
https://learn.unity.com/tutorial/c-actions?language=en
Player.csの中
using System;
...
public class Player : MonoBehaviour
{
//delegate型で宣言メソッドの中身はここでは定義しないのでnull
//delegate型のみで使うには中身を定義しないといけない
//EX) public OnDamageReceived method_1 = delegate {};
// method_1 += method;
// private method(){
// //実行したい処理
// }
public delegate void OnDamageReceived(int currentHealth);
pubic static event OnDamageReceived onDamage;
//eventはクラス内でしか定義できない、実行はクラス内のメソッドからしか行えないdelegate型のこと
// public static Action onComplete;
//Actionは返り値がvoidのdelegate,返り値を指定する場合は
//Action<返り値の型>と書かないと行けない
public int Health{get;set;}
...
void Damagge(){
Health--;
if(onDamage != null)
onDamage(Health);
}
}
これを別のところで呼び出すとき
UIManagerの中
public void OnEnable(){
Player.onDamage + = UpdateHealth;
}
void UpdateHealth(int health){
//現在のhealthを表示する処理
}