web-dev-qa-db-de.com

Warum gibt Resources.Load <Sprite> null zurück?

In meinem Projekt befinden sich mehrere Sprites unter Assets\Sprites, die ich mit einem C # -Skript laden möchte.

Ich habe das getestet:

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

myFruit ist aber immer noch null.

23
Brian Nguyen

Resources.Load sucht nach einem Verzeichnis in Assets/Resources

Wenn Sie es im Sprites-Verzeichnis ablegen möchten, legen Sie es in Resources (zB Assets/Resources/Sprites). 

Dann kannst du es einfach so laden:

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

Stellen Sie außerdem sicher, dass Sie Ihren Bildtyp im Inspector auf Sprite gesetzt haben. 

Wenn Sie mehrere Sprites laden möchten, verwenden Sie Folgendes: 

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

Siehe this für weitere Details.

52
Jay Kazama

Platzieren Sie awesome.png in Assets/Resources/ (Sie können Unterordner haben) und verwenden Sie:

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

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

Es gibt auch LoadAll that "Lädt alle Assets in einem Ordner oder in einer Datei unter dem Pfad in einem Ressourcenordner."

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

Resources.Load sucht im Verzeichnis "Assets/Resources" Deshalb müssen Sie das tun 

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

oder

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

mit spritesPath als relativer Pfad . Wenn Sie alle Dateien aus dem Ordner "Assets/Resources/Sprites" laden müssen, müssen Sie nur "Sprites" schreiben.

danach können Sie einfach Folgendes tun: 

var Sprite = sprites[0];

oder 

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

Sie müssen den vollständigen Pfad für das Asset eingeben. Versuchen Sie in diesem Fall den Pfad "Sprites/Graphics_3".

0
ChrisWebb

Die Skriptreferenz von Unity besagt nicht, dass Sie <Sprite> direkt nach Load schreiben müssen. Ich hatte also Probleme beim Laden von Sprites, obwohl sich mein Sprite im Ressourcenverzeichnis befand.

0