例として、プレイヤー オブジェクトA オブジェクトB オブジェクトCにそれぞれ
PlayrerClass classA classB classCがアタッチされているとします。
それぞれプレイヤー以外のクラスには、以下のメソッドがあるとします。
public void OnHitObject(){Debug.log(object.name":にヒットしました");...その他オブジェクトごとの処理}
プレイヤーがオブジェクトにレイを飛ばしたとして、そのオブジェクト内のOnHitObjectを呼び出したいのですが、
オブジェクトが数種類ならいいのですが、50や100といった場合、例を飛ばしたオブジェクトごとにif文で条件分岐するのは非効率でしょうし、
現実的ではないと思います。
なのでUnityEventのコールバック関数なんかを使えばいいと思うのですが、イメージをコードに起こせずに困っております。
イメージとしては、プレイヤーのスクリプト内にUnityEvent HitRayEventを作る。
レイが当たったらオブジェクトのスクリプト内でOnHitObjectというメソッドをHitRayEventに登録する。
登録したHitRayEventを発行する。
処理が終わったら発行したメソッドをHitRayEventから消去する。
このような感じにしたいのですが、そもそもレイが当たってオブジェクトにアタッチされているクラス内のメソッド登録を行うには
そのオブジェクトにアタッチされているクラスの中にあるOnHitObjectを登録するメソッドを呼び出さなきゃいけないから
どのみち全部if文でオブジェクトごとに分岐しなきゃいけないですよね?
このような場合どう工夫すればいいのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。