【Unity】Resources.Loadを正しく理解する


良く理解せずにコピペで使ってたので返り値が null になって困った。

ここを見てちゃんと理解していく。

問題のコード

Resources フォルダを作って b001.png(Spriteに自動変換) を入れた状態。

最初から

まず最初に Resources.Load() は Object を返す。

また第2引数で取得するファイルの種類を指定できる。

同名のSpriteとMaterialを入れておくとこうなる。

 

次にように型変換を行う。

なんでスプライトの基本型が Texture2D なのかはわからないけど、取ってきたオブジェクトと変換後の型が異なると Null になる。

as演算子は変換できないときにnullを返す。

最初のコードはこのせいでnullになっていた。

ちゃんと第2引数と型変換を正しくすれば問題ない。

キャスト演算子なら例外を吐くので、ミスを見逃さないためにはコッチのほうが良い気がする。多分デメリットは処理速度だけだと思う。

ただ Resources.Load() でキャストしている例は見たことがないので他の理由もあるかもしれない。

 


コメントを残す

メールアドレスが公開されることはありません。