UnityLearn勉強ノート3

C# Interfaces C# Action

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を表示する処理
}

See also