質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

7442閲覧

Resources.Load()の実装方法の違いについて[ Unity・C# ]

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

2クリップ

投稿2020/05/28 12:16

Resources.Load()を使用してSpriteを動的に取得する方法を調べたのですが、とりあえず以下の2つの記述方法を見つけました。
1 : Sprite sprite = Resources.Load<Sprite>("Texture");
2 : Sprite sprite = Resources.Load("Texture") as Sprite;
上記の2つを試したところ、2番のみでエラーがでました。
これは、自分のコードや環境などが問題なのか、そもそも2番の記述が間違っているのかどっちなのでしょうか?

また、GameObjectを動的に取得する場合は、
GameObject obj = (GameObject)Resources.Load("Object");
と記述できるのに、自分が試した範囲では、
Sprite sprite = (Sprite)Resources.Load("Texture");
ができなかったので、本当はこれでもできるのか、できないなら何故できないのか教えてくださると助かります。

おまけ程度に、Resources.Load()の他の記述方法や便利な利用方法があれば教えて欲しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

【Unity】Resources.Loadを正しく理解する
↑こちらの参考サイトに原因が載っておりました。

1、「Resources.Load("Texture") as Sprite;」で正常に動作しない原因
・原因
記述に問題があるため動作していないようです。

・理由と対処方法
"Resouces.Load"でSpriteファイルを読み込もうとすると、Texture2Dの型で返却される模様。
そのため、"as"でSpriteにキャストしようとしても、Texture2D -> Sprite にはキャスト出来ずにNullとなる。
Spriteファイルを正常に取得したい場合は、以下のように型指定を行う。

C#

1誤:Sprite sprite = Resources.Load("Texture") as Sprite; 2正:Sprite sprite = Resources.Load("Texture", typeof(Sprite)) as Sprite;

「Sprite sprite = (Sprite)Resources.Load("Texture");」も上記問題と同様に、以下のように記述する必要があるようです。

C#

1誤:Sprite sprite = (Sprite)Resources.Load("Texture"); 2正:Sprite sprite = (Sprite)Resources.Load("Texture", typeof(Sprite));

2、Resources.Load()の他の記述方法や便利な利用方法
※Load()とは違いますし、既にご存知だったらスルーしてください。。
Resources.LoadAll()メソッドを利用すれば、フォルダ配下の複数ファイルを取得可能となります。
Resources.LoadAll

投稿2020/05/28 14:02

編集2020/05/29 00:40
tsuki01

総合スコア1751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/29 08:22

丁寧な回答ありがとうございます。 Sprite sprite = Resources.Load("Texture") as Sprite; でも実行できたのがちょっと怖いですが、今後はどちらであれちゃんと型指定したいと思います。 LoadAll()使ったことないのでためになりました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問