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

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

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

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

Unity

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

Q&A

1回答

1561閲覧

[Unity]プレハブをインスタンス化する時にスクリプトをアタッチする方法

shupira

総合スコア7

C#

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

Unity

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

0グッド

0クリップ

投稿2022/01/29 19:03

実現したいこと

プレハブに元々スクリプトをアタッチしておくのでは無く、
プレハブをインスタンス化する際に、空のオブジェクトにアタッチしているスクリプトをアタッチしたいです。

StopAttackというオブジェクトにStopAttack.csというスクリプトがアタッチされており、
enemy3という名のプレハブをインスタンス化した際にそのスクリプトをアタッチしたい。

自分で試そうとしたこと

インスタンスにスクリプトをつけるのでは無く、スクリプトにインスタンスを探させようと試したのですが、

  • 様々な名前のcloneがある中で対象のcloneをどのように探すのか
  • どのようにして適切なタイミングで呼び出す(Update関数などでむやみに呼び出さない)のか

に行き詰まり、ろくにコードも書けませんでした。

なぜそのようなことがしたいのか

  • 関数のアタッチし忘れを防ぎたい(自動化したい)
  • アタッチの手間を省きたい(〃)

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

スクリプトから独自クラス(スクリプト)をアタッチしたい場合はAdd Componentを使います。

GameObject enemy = Instantiate(Enemy3); enemy.AddComponent<StopAttack>();

お気になさっているように、InstantiateとAddComponentはかなり重い処理なので
https://qiita.com/tsuyoiebi/items/81b9d42067ffe11224fd
https://tsubakit1.hateblo.jp/entry/20140531/1401531248
例えばシューティングの弾のような感じでUpdateの中で回すのはUnityの実装の中でもかなりの大罪として断罪されてしまうのでお気をつけください。

私はenemy3プレハブに最初からStopAttack.csをアタッチしておく方法をおすすめします。
・関数のアタッチし忘れを防ぎたい(自動化したい)
・アタッチの手間を省きたい(〃)
というのはenemyのプレハブが複数あって、それに一つ一つ手付けでStopAttackをつけるのは手間だから…みたいな感じでしょうか?

もしそうでしたら、複数Prefabへのコンポーネントのアタッチは一度にまとめて行うことができます。
Prefabを複数選択したあと、Inspectorにスクリプトをドラッグすれば、選択したPrefabにまとめてアタッチすることができます。
フィルター検索と組み合わせれば、手間も漏れもあまりありません。

投稿2022/01/31 03:52

UnchFullburst

総合スコア669

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

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

shupira

2022/02/04 08:35

プレハブを複数選択した後にスクリプトをアタッチする方法は知っているのですが、 アップデートで同様のスクリプトをアタッチするようなプレハブを追加する予定でして、 どれにアタッチしたかが分からなくなってしまうことが予想されるのです、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問