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.
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.
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."
Sprite sp = Resources.LoadAll<Sprite> ("Sprites/AI-Avtar") [2] as Sprite;
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();
Sie müssen den vollständigen Pfad für das Asset eingeben. Versuchen Sie in diesem Fall den Pfad "Sprites/Graphics_3".
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.