アイデアで回避できそうなことだけど、なかなかひねり出てこないので備忘録として。
生成したブロック(=Prefab)がプレイヤーに当たったとき、そのブロックを消す。
といったスクリプトをブロックに入れたけど、インスペクターの参照先がNoneになる!
ってことがありました。
バージョン
2021.3.3f1
具体的手法
- 「C#名」型を宣言しておく。
- 参照したいスクリプトを持っているGameObjectをFindとかで探す。
- GameObject型に代入する。
- それをGetComponent<C#名>();で取得し、「C#名」型に代入。
- 「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>();
とすることで一行書きにも出来ました。
コメント