バナナラボ

Vtuber美作ワニのブログです

【実装のヒント】無名関数の活用(3)【Unity】

バナナラボの美作です。

今日も無名関数についての記事です! 過去記事は以下!

bananalabwani.hatenadiary.com bananalabwani.hatenadiary.com

System.FuncSystem.Actionですが、ひとつの変数に対して複数の関数を登録することも可能です。

var x = 0;
a += () => { x += 1; };
a += () => { x += 2; };

a();

// xの結果は3

System.Funcの場合は最後の戻り値が結果として入ります。そのため、複数の結果が真であることを想定した実装をする場合、工夫する必要があります。

これらの複数のイベントを実行できるという点を理解しておくと条件によって振る舞いを変えたい実装をするときのヒントになるのかなと思います。

登録の削除

登録の削除は至ってシンプルで、変数にNullを代入すればリセットすることができます。

また特定の関数だけ削除したい、という場合は関数が同一のものを減算で設定してやれば削除することができます。

System.Action a = Test;
a -= Test;

// 以下のケースは消えない
System.Action b = () => {};
b -= () => {};

これは別個体の関数として定義されてしまっているため、同一の内容であっても消すことができないため(コード上同一であると認識できない)

最後に

無名関数について最低限のことは今日まで記載しました! 他にもデリゲートなどいろいろありますが、機会があればまた紹介しようと思います。

宣伝

YouTubeでゲーム実況・ゲーム開発の動画投稿および配信をやっています! もしご興味があればチャンネル登録・高評価よろしくおねがいします!

www.youtube.com