前回の記事で、動的な引数をつけてUnityEventを使い方法を紹介しました。【Unity】動的な引数付きでUnityEventを使って別のオブジェクトのスクリプトを実行するただそれには1つ問題がありまして、それはオブジェクトをプレハブ化するとUnityEventに割り当てていたオブジェクトが外れてしまうという点です。今回はそれを、プレハブをインスタンス化したときに、実行したいメソッドを予め確保し必要に応じてそのメソッドを実行するようにします。ヒエラルキーウィンドウ上ではオブジェクトが割り当てられているけど...プレハブ化すると「なし」となってしまうプレハブに実行したいメソッドを確保する方法プレハブをインスタンス化した際に、以下のようにデリゲートを用いて実行したいメソッドを確保します。UnityAction<MyClass>(callback);myEvent.AddListener(myClassListner);}今回は独自クラスを使用しているのでとしていますが、stringやintでも大丈夫です。実行するメソッドの引数に合わせて変更しましょう。前回同様に実行のトリガーとなる「TestButton2.cs」と、引数を受け取るメソッドが書かれている「TestScript2」の2つを用意します。null;ここは前回と同じです。UnityEventで動的な引数を渡すために必要な記述となり、UnityEventを継承した独自クラスを宣言しています。myDelClass);デリゲートの宣言をしています。「MyClass」を引数としたメソッドを確保するための準備となります。UnityAction<MyClass>(callback);myEvent.AddListener(myClassListner);}初期化処理の部分。プレハブからインスタンス化するときに、このメソッドを呼び出します。callback)としてInvokeしたときに実行したいメソッドを受け取ります。その受け取ったメソッド(callback)をAddlistenerでリスナー登録します。しておくことで、Invokeしたときに引数として受け取ったメソッドを実行できるようになります。MyClass(transform.name);myEvent.Invoke(myClass);}ボタンをクリックしたときに呼ばれるメソッド。自身のオブジェクト名を引数としてInvokeに渡しています。callback)」で受け取り確保しておいたメソッドを実行しています。null;プレハブ化しておいたボタンUIをスクリプトに登録するための変数。false);obj.GetComponent<TestButton2>().Init(CallBack4);}ゲーム実行時にプレハブをインスタンス化しています。「TestButton2.cs」のInitメソッドを実行しています。引数としてボタンがクリックされたときに実行してほしい「CallBack4」メソッドを渡しています。myClass.myNmae;}Invokeされた際に呼ばれるメソッドです。このメソッドに”Invoke(値)”で指定した値が引数として渡されます。引数として受け取れる型はInvokeする際に渡される型と合わせておく必要があります。}」としているため、MyClass型が引数として受け取ることができます。受け取った引数をそのままテキストとして画面に表示します。動作確認用にボタンUI、テキストUIをヒエラルキーウィンドウに追加しました。作成したボタンに「TestButton2.cs」を、Textには「TestScript2.cs」をアタッチします。ボタンをクリックした際にテキストオブジェクト引数を渡したいので、ボタンUIのクリックイベントに自分自身の「Click()」メソッドを指定しておきます。ここまでできたら、ボタンUIをプロジェクトウィンドウにドラッグ&ドロップしプレハブ化します。プレハブ化したらボタンUIは不要なので削除します。最後にテキストUIにアタッチした「TestScript2」にボタンUIを割り当てます。再生ボタンでゲームを実行します。実行とともに作成されたボタンを押すと、押したボタンの名前がテキストに表示されます。「TestScript2」が、ボタンのオブジェクト名を引数として受け取って画面に表示しているのが確認できます。スポンサードサーチまとめデリゲートを使うことで少し複雑になっていますが、やっていることはシンプルです。この方法を使うことでプレハブから複数ボタンを作成したときなどに、どのボタンが押されたかを簡単に取得できるようになります。【Unity】UnityEventを使って別のゲームオブジェクトのスクリプトを実行できるようにするUnityでオブジェクト同士の連携をさせたいことは多々あると思います。...【Unity】Android端末でStreamingAssetsからAssetBundleを読み込む方法ちっとも読み込めなくてどえらいハマったので備忘録。...【Unity】スクリプトからすべての子オブジェクトを消す方法Unityでスクリプトで動的に作成したオブジェクトをすでに存在するオブジェクトの子として登録することはよくあると思います。登録したからには削除したい!ってことも当然出てきます。~放置系ねこゲー~以前からUnityで作っていた放置系ねこアプリ、「ミロくんとのせいかつ」。癒されねこのミロくんを、ただひたすら愛でるだけのゲームです。(1ユニットのピクセル数)とはどういうものか、どう向き合えばよいかが何となく分かってきたのでまとめてみます。...PREV【Unity】動的な引数付きでUnityEventを使って別のオブジェクトのスクリプトを実行するNEXT【Unity】Twitterと連携して画像付きでツイートする方法プロフィール管理人:ぺんたんAndroidゲームアプリ開発を経て、現在はUnityでゲーム開発中。ゲーム開発に限らずIT系のお役立ち情報を発信中。~放置系ねこゲー~以前からUnityで作っていた放置系ねこアプリ、「ミロくんとのせいかつ」。癒されねこのミロくんを、ただひたすら愛でるだけのゲームです。Wi-Fiの後継サービスです。やりたいことは、この動画のような内容です。前回の記事で、動的な引数をつけてUnityEventを使い方法を紹介しました。...2019/11/24【Unity】動的な引数付きでUnityEventを使って別のオブジェクトのスクリプトを実行する前回の記事でUnityEventを使って別オブジェクトのスクリプトを実行する方法を紹介しました。