のぼるゲーム開発備忘録

ゲーム開発のプログラマーです。ゲーム開発関連、調べた内容をアップしていきます。Unityを使用して個人開発を行っています。

【Unity】【備忘録】Resources.Load で null が戻された

はじめに

 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フォルダを基準に読み込みを行います。

f:id:ikeball:20201206131513p:plain

型を指定して読み込み

型を指定して読む込む方法も用意されていました。 シェーダーとマテリアルのように同じ名前のオブジェクトが同フォルダ内にある場合は型を指定して読み込む必要があります。

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