Unity++blog.

UnityやC#とかについて学習したことを書いてます

Delegateでイベントを通知する

追記:この記事の内容でイベント通知はできますが、通知が一回ではなく沢山いってしまいます。例えばUnityでクリックイベントを通知したい時にこの記事のコードでやってしまうと、一回クリックすると100-200通知が行っているのに気が付きました。実行する処理によっては問題があります。(どうすればいいか教えてください泣)最近はUniRx使いになりたくて、イベント関係はなるべくUniRxを使うようにいています。

 

UniRxのイベント関係記事

 

nabesi777.hatenablog.com

 

 

nabesi777.hatenablog.com

 

 

nabesi777.hatenablog.com

 

 

nabesi777.hatenablog.com

 

 

 

イベントは多分Unityの方で前にも書いたけど便利なので、また書きます。

英語学習アプリを作る際に使いました!

 

カウントが規定数以上になったら、その事を通知して処理をするという流れで使いました。

 

まずDelegateの宣言をします。 TestEventの場所へ任意のイベント名を付けます。

(TestClass.cs)

public event EventHandler TestEvent = delegate { };

 

次に発生させたい場所へ書きます。()内で特に値を送らずにイベントがあった旨だけ通知します。

if(count>3)

  {

     TestEvent (this, EventArgs.Empty);

  }

次に受け取る側の書き方です。

(受け取りたいクラスへ書く)

TestClass.TestEvent += delegate (object sender, EventArgs e)
 {

  //実行したい処理

 };