【Unity】生成するPrefabにスクリプトのinspectorが使えなかったので対処する。

アイデアで回避できそうなことだけど、なかなかひねり出てこないので備忘録として。


生成したブロック(=Prefab)がプレイヤーに当たったとき、そのブロックを消す。
といったスクリプトをブロックに入れたけど、インスペクターの参照先がNoneになる!

ってことがありました。

バージョン

2021.3.3f1

具体的手法

  1. 「C#名」型を宣言しておく。
  2. 参照したいスクリプトを持っているGameObjectをFindとかで探す。
  3. GameObject型に代入する。
  4. それをGetComponent<C#名>();で取得し、「C#名」型に代入。
  5. 「C#名.変数名」でPrefab内で使えるようになる。

簡略版コード

public GameObject A;
public B b;

A=GameObject.Find(“player”);
b=A.GetComponent<B>();

同スクリプト内では、b.変数名で参照できます。

注意
BはC#名 bは変数に当たります。
publicで宣言された変数です。
例のplayerはUnityのヒエラルキーのGameObject名です。

省略することも可能で

b=GameObject.Find(“player”).GetComponent<B>();

とすることで一行書きにも出来ました。

コメント

タイトルとURLをコピーしました