UnityEventについて読んで、実装しようとしています。PrefabでUnityEventにリスナーをプログラムで追加する方法
GameObject "ScriptsHolder"にアタッチされた "GameController.cs"スクリプトと "target"というプレハブGameObjectにアタッチされた "target.cs"スクリプトがあります。
「ターゲット」は、起動時にシーンではない:私は、「target0」、「ターゲット1」に名前が変更され、特定の時点で、複数のターゲットを開始...
ターゲットがダメージを受け、私はそのオブジェクトを破壊するvoidを持つGameController.csにその名前を送信します。 は、ここに私がやったことだ:
target.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class target : MonoBehaviour {
public UnityEvent damageEvent;
void Damage(float damage)
{
damageEvent.Invoke();
}
}
次に、私は私のターゲットプレハブにし、インスペクタでクリックし、私は被害のイベントに「ScriptsHolder」を追加してみてください。ここに私の問題があります:私はダメージイベントにScriptsHolderを落とすことはできません。いくつかのテストを行いましたが、その理由は「ターゲット」がまだ私のシーンにないという事実のようです。
代わりにリスナーを追加する方法について説明しましたが、これを行う方法を理解できません。 "GameController.cs" でここで私が持っているもの
:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class GameController : MonoBehaviour {
UnityEvent damageEvent;
void Awake()
{
damageEvent.AddListener(targetReceivedDamage);
}
void targetReceivedDamage()
{ // do some stuff }
}
しかし、それは動作しません。私は間違って何をしていますか?または、「ターゲット」がシーン内にないのに、ScriptsHolderをダメージイベントに追加するにはどうすればよいですか?
ご協力いただきありがとうございます。
おかげで役立ちますが、それを動作させることができない...それは言う: '" UnityEngine.GameObjectが含まれていません。 damageEventの定義 " – binoculars
プレハブをターゲットとして宣言する必要があります。またはインスタンス化されたオブジェクトからコンポーネントを取得する必要があります。 –