
Unity の C# コードで System.Type.GetType が null を返してしまう
#Unity#.net✎ 2022-1-11Unity の C# コードで System.Type.GetType が null を返してしまう
Unity で親子のゲームオブジェクト(GameObject)を取得する、いくつか方法があります。
ここでは Transform.Find の使用例と、親にさかのぼって別の子供のオブジェクトを取得する方法、 さらに、Linux や Windows のように "../../Enemy/Monster/Wolf" のように 親にさかのぼって相対パスのように取得する方法について記載します。
Transform.Find
を使用すると、子供のオブジェクトを取得できます。
以下のような構造のときに Enemy にアタッチされたスクリプト内から、
this.gameObject.transform.Find("Monster/Wolf")
で Wolf の Transform を取得できます。
サンプルコードは以下のようになります。
public class EnemyBehaviour : MonoBehaviour{
void Start() {
GameObject wolf = this.gameObject.transform.Find("Monster/Wolf").gameObject;
}
}
以下のような構造のときに、まず親のオブジェクト「Enemy」を取得し、
親のオブジェクトを基点にして、transform.Find("Monster/Wolf")
で Wolf を取得できます。
サンプルコードは以下のようになります。
public class EnemyBehaviour : MonoBehaviour{
void Start() {
Transform enemyTransform = this.gameObject.transform.parent;
this.wolf = enemyTransform.Find("Monster/Wolf").gameObject;
}
}
これは Transform.Find で一発でパスとして書くこともできます。
public class EnemyBehaviour : MonoBehaviour{
void Start() {
this.wolf = this.gameObject.transform.Find("../Monster/Wolf").gameObject;
}
}
以上。Transform.Find の使い方メモでした。
日付 | 変更概要 |
---|---|
なし |
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: