web-dev-qa-db-ja.com

Resources.Load <Sprite>がnullを返すのはなぜですか?

私のプロジェクトには、Assets\Spritesにある複数のスプライトがあり、C#スクリプトを使用してロードします。

私はこれをテストしました:

Sprite myFruit = Resources.Load <Sprite> ("Graphics_3");

ただし、myFruitはまだnullです。

26
Brian Nguyen

Resources.Loadは、Assets/Resourcesでディレクトリを検索します。

Spritesディレクトリに配置する場合は、Resources内に配置します(例:Assets/Resources/Sprites)。

次に、次のようにロードします。

Sprite myFruit = Resources.Load <Sprite> ("Sprites/Graphics_3");

また、インスペクターで画像タイプをスプライトに設定していることを確認してください。

複数のスプライトをロードする場合、これを使用します:

Sprite[] myFruit = Resources.LoadAll <Sprite> ("Sprites/Graphics_3");  

詳細については、 this を参照してください。

59
Jay Kazama

場所 awesome.png in Assets/Resources/(サブフォルダーを持つことができます)、および使用:

GetComponent<SpriteRenderer>().Sprite = 
    Resources.Load<Sprite>("awesome");  // No file extension.

http://docs.unity3d.com/ScriptReference/Resources.html

LoadAll that "Resourcesフォルダー内のパスにあるフォルダーまたはファイル内のすべてのアセットをロードします。"もあります

3
Anis Abboud
    Sprite sp = Resources.LoadAll<Sprite> ("Sprites/AI-Avtar") [2] as Sprite;
0
Shaik Azeed

Resources.Loadはディレクトリ「Assets/Resources」で検索しているため、実行する必要があります

_sprites = Resources.LoadAll<Sprite>(spritesPath);

または

_sprites = Resources.Load<Sprite>(spritesPath);

相対パスとしてspritesPathを使用します。フォルダ「Assets/Resources/Sprites」からすべてをロードする必要がある場合は、「Sprites」のみを記述する必要があります。

この後、次のことができます。

var Sprite = sprites[0];

または

var Sprite = _sprites.Where(a => a.name == "Sprite_Name_Needed").First();
0
Andrew

アセットの完全なパスを入力する必要があります。この場合、パス「Sprites/Graphics_3」を使用してみてください。

0
ChrisWebb

Unityのスクリプトリファレンスでは、<Sprite>Loadの直後。したがって、スプライトはResourcesディレクトリにありましたが、スプライトのロードに問題がありました。

0