Unityでゲームを開発していて,GetComponentに関する質問です.
名前がnameのでタグがTagとついているあるゲームオブジェクトが存在して,このゲームオブジェクトにはnameと同じ名前をもつスクリプトがアタッチされているとします.このとき,ゲームを開始するまでnameがわからないとして,スクリプトにGetComponentを用いてアクセスすることはできるでしょうか?
##試したこと・問題点
タグはTagであるとわかっているので,FindWithTagを用いればゲームオブジェクトにアクセスすることはできますが,
スクリプトの名前がわからないため型名としてフィールドに変数を準備することができません.つまり,以下のコードでスクリプト名のところを書く方法がわかりません.このようなことはそもそも可能なのでしょうか?
回答よろしくお願いいたします.
C#
1GameObject gameObject = GameObject.FindWithTag("Tag"); 2スクリプト名 gameScript = gameObject.GetComponent<スクリプト名>();
var型を用いることも考えましたが,gameScriptはフィールドに記述したいのでそもそも使うことができませんでした.
取得したいコンポーネントというのは https://teratail.com/questions/193583 に出てきたゴブリンのようなものでしょうか。
もしGetComponentで取得して利用したいのが基底である敵クラスの情報だけならば、「Enemy gameScript = gameObject.GetComponent<Enemy>();」とすれば実際のクラスがゴブリンでもドラゴンでも関係なく、抽象化された敵として取得できるかと思います。こういった方法だと不都合がありますでしょうか?
このやり方だとまずいようでしたら、GetComponentで取得したあとコンポーネントをどのように利用するのか詳しくご説明いただけますと方法検討の参考になりそうです。
その方法で解決できました!
敵のもつステータスにアクセスしたかったので不都合はなさそうです.ありがとうございます!
ご参考になりましたようで幸いです。お時間のあるときにでも、自己解決回答として概要をご記載いただけますと閲覧者の皆さんに役立つかと思います。
回答1件
あなたの回答
tips
プレビュー