ブログ設営中

【Unity初心者講座】eventとdelegate(Action/Func)解説完全版

デリゲートとは

delegate=変数として定義することができる関数

  • 関数=動作させることしかできない
  • 変数=上書き・変更ができる
関数は「動的な変更はできない」変数は「動的な変更ができる」

関数を変数に入れて,動的な変更ができる仕組み

 

デリゲートで出来ること

主にできることは2つ

  • 動的な処理を動的に変更できる(代入・上書き・削除)
  • メソッド後にメソッドを動作させる(コールバック処理)

「関数の動的な変更」と「コールバック処理」をマスターしよう

 

デリゲートの書き方

例文を解説

  1. 「intを引数にしてvoidを返すメソッド」の関数をMethodParamと名付け,定義する
  2. 「定義した関数」をxと名付け,変数として定義し,中身は入れない
delegate void MethodParam(int name)

private MethodParam x = null;

「関数の型を定義」+「変数として定義」の2つの定義

 

関数の「変数的な演算」

関数の変数が左辺の時,独特の挙動をする

  • =(イコール)▶︎関数を上書きする
  • += (プラス,イコール) ▶︎左側の関数動作後,右の関数を動作させる
  • 変数() (メソッドの()をつける)▶︎そのタイミングで動作させる
普通の関数も
  • デリゲート関数の変数 += 関数名(名前だけ足す)▶︎関数名を後に起動する
「独特な演算」を理解しよう

 

コールバックの仕組み

要するに

  • 処理▶︎デリゲート関数▶︎デリゲート関数の変数▶︎起動 (コールバック処理)
  • 処理▶︎デリゲート関数▶︎デリゲート関数の変数▶︎上書き・代入

関数を「処理」と「起動」に分けること

 

デリゲートの種類

定義が2行から1行になる

public event Action<string> MethodHandler;
  • Action ▶︎戻り値がないデリゲート
  • Func ▶︎戻り値があるデリゲート

デリゲートを具体的にすることで「1文減らしている」

 

イベントの意味

デリゲートにメソッドを追加しかできなくなって上書きができなくなる
今ある既存の関数が保護されるのでよく使用される