はじめに
Unity C# で、下記プレハブ読み込み時に null が返ってきたので調査時の備忘録。 新規プロジェクトで使用した際に引っかかりました。
// 宣言していた変数 private GameObject floorPrefab; // 戻り値でnullが返されました floorPrefab = Resources.Load("Prefabs/Floor") as GameObject;
環境
Unity 2019.4.3f1 C#
原因と対応
Assets以下に直接Prefabsフォルダを作成していたのが間違いでした。 Resourcesフォルダを作成し、Resources/Prefabsの中にプレハブを配置する必要がありました。 Resources.Load は、Assets/Resourcesフォルダを基準に読み込みを行います。
型を指定して読み込み
型を指定して読む込む方法も用意されていました。 シェーダーとマテリアルのように同じ名前のオブジェクトが同フォルダ内にある場合は型を指定して読み込む必要があります。
https://docs.unity3d.com/ja/current/ScriptReference/Resources.Load.html
// 宣言していた変数 private GameObject floorPrefab; // 戻り値でnullが返されました floorPrefab = Resources.Load<GameObject>("Prefabs/Floor");
おわりに
アウトプットすると記憶定着が良いという話を耳にしたので、些細なことでも備忘録付けていこうと思います。
参考サイト
▼公式リファレンス docs.unity3d.com
▼参考にさせて頂いたサイト様 blog.narumium.net