You are currently viewing Unityのオブジェクト検索で詰まった話

Unityのオブジェクト検索で詰まった話

Unityのオブジェクト検索でちょっと詰まったことがあったのでメモ

Find関連のメソッドはオブジェクトが非アクティブだと検索されない

UnityのFind系メソッド(GameObject.Find、FindWithTagなど)で非アクティブなオブジェクトは検索対象とならず取得できない

解決方法としては以下があげられる
・public変数をクラスに用意し、エディターから対象オブジェクトを直接設定しておく
・transform.Findメソッドを利用する(Transformとして返却されるため、gameObjectプロパティを参照する)

自分が作成しているゲームは、主要なオブジェクトをアセットバンドルからロードするため事前にpublic変数へ設定することができない・・・
transform.Findを利用することで解決できた

スラッシュを利用した指定

XR Core Utilityに定義されているGetNamedChild、子オブジェクトを取得するときに利用していたのですが、孫オブジェクトがうまく取得できず悩んでました

調べてみると、ヒエラルキーの階層はスラッシュ区切りで指定できるそうなので、スラッシュ区切りを指定することで孫オブジェクトも取得できる

以上

本当にメモ内容で申し訳ないですが、自分が忘れないためなので・・・
今回の記事についてはすでに多くのノウハウが公開されているため、より詳細を知りたい場合は公式ドキュメントや他サイトを参考にされたし!

参考サイト
https://takap-tech.com/entry/2024/03/04/214945
https://tech.pjin.jp/blog/2022/1/24/unity-transform_find/

コメントを残す