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/