質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

849閲覧

Unity 触れたオブジェクトのスクリプトを取得し、その中の関数を起動させる方法が分かりません。

TENNEKO

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2023/02/26 02:58

編集2023/02/26 03:00

実現したいこと

触れたオブジェクトのスクリプトを取得し、そのスクリプトの関数を起動させる。

前提

触れたオブジェクトがどんなオブジェクトであろうと、特定のタグが付いていればスクリプト内の特定の名前の関数を起動させたい。

発生している問題・エラーメッセージ

スクリプトを取得し、そのスクリプト内の関数を起動させる方法がよく分かりません。

該当のソースコード

private void OnTriggerEnter2D(Collider2D collision) { if(collision.tag == "Apple") //Appleタグの付いたオブジェクトに当たった場合 { MonoBehaviour script1 = GameObject.Find(collision.gameObject.name).GetComponent<MonoBehaviour>(); script1.Action(); } }

補足情報(FW/ツールのバージョンなど)

unity 2021.3.8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この場合、インターフェースを使うのがいいでしょう。

1. Action()があるinterface(ここではIActionComponentとする)を用意する

C#

1public interface IActionComponent 2{ 3 void Action(); 4}

2. 呼び出し先のクラスにIActionComponentを継承させ、Action()を実装

C#

1public class FooScript : MonoBehaviour, IActionComponent 2{ 3 public void Action() 4 { 5 // 行いたい処理 6 } 7}

3. GetComponentでIActionComponentを含むスクリプトを取得し、Action()を呼び出す

C#

1 private void OnTriggerEnter2D(Collider2D collision) 2 { 3 if(collision.tag == "Apple") //Appleタグの付いたオブジェクトに当たった場合 4 { 5 IActionComponent script1 = collision.gameObject.GetComponent<IActionComponent>(); 6 script1.Action(); 7 } 8 }

投稿2023/02/26 03:26

編集2023/02/26 03:28
fiveHundred

総合スコア9801

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TENNEKO

2023/02/26 06:01

素早く、的確な回答助かりました。新しく勉強しなくてはいけないことを知れて嬉しいです。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問