質問: GameObject.FindGameObjectWithTag("background"); enemyObject.transform.SetParent(background2.transform, false); ``` こんなかんじでランダムに生成しています。destroy.csというものを作成し、 destroy(生成したprefab)に条件を加えHPが0になると破壊するようにしています その際、HPを管理しているのは別のcsなので(enemy.csとする)destroy.csにenemy.csを アタッチしたいのですが、sceneを選択できないため、アタッチできない状況です 生成するインスタンス(prefab)がヒエラルキー上にない、 project上にあるのが原因でしょうか
回答: ご質問の内容を読み取れてなかったらごめんなさい。 題名や質問文から、「インスタンス」と「プレハブ」の用語の使い方に混同が見られるように思います。 コンポーネント(質問文のenemy.csやdestroy.cs)を追加したいのは、プレハブ(Project Viewにあるプレハブアセット)に対してでしょうか? もしくはプレハブから生成したインスタンス(例えば質問文のenemyObject)に対してでしょうか? プレハブにコンポーネントを追加するには、Project Viewにあるプレハブをクリックしてから、表示されたインスペクター上でコンポーネントを追加します。 そうではなく、題名通りに「インスタンスにコンポーネントをアタッチする方法」であれば、 ``` enemyObject.AddComponent<(destroy.csやenemy.csに書かれたコンポーネントの名前)>() ``` のようにすればコンポーネントを追加できます。 質問文に > > 生成するインスタンス(prefab)がヒエラルキー上にない、 > > project上にあるのが原因でしょうか > > > とありましたので、おそらく前者(プレハブアセットにコンポーネントを追加する方法)だと考えましたが、念のため後者(インスタンスにコンポーネントを追加する方法)も書きました。 **2015-11-27 16:08追記** もしかして、destoryコンポーネントのインスペクターのEnemyに対して、Project Viewにあるenemy.csをドラッグアンドドロップして関連付けようとしていますか? Enemyにドロップ可能なのは、ヒエラルキー上のインスタンス(GameObject)か、またはProject Viewにあるプレハブです。ですので、予めenemyコンポーネントを追加済みのGameObjectまたはプレハブを用意しておいてから、Enemyに対してドラッグアンドドロップすれば関連付けられると思います。 もし関連付けに成功したならば、Enemyの割当先の表示が「(GameObject名またはプレハブ名) (enemy)」と変わるはずです。この表示は「GameObjectまたはプレハブに追加されたenemyコンポーネントを参照している」という意味です。