web-dev-qa-db-fra.com

Pourquoi Resources.Load <Sprite> renvoie-t-il la valeur null?

Mon projet comporte plusieurs sprites situés dans Assets\Sprites que je veux charger à l'aide d'un script C #.

J'ai testé ceci:

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

Mais myFruit est toujours nul.

23
Brian Nguyen

Resources.Load va rechercher un répertoire dans Assets/Resources

Si vous voulez le placer dans le répertoire Sprites, placez-le dans Resources (ex. Assets/Resources/Sprites). 

Ensuite, vous pouvez simplement le charger comme ceci:

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

Assurez-vous également que vous avez défini votre type d'image sur Sprite dans l'inspecteur. 

Si vous voulez charger plusieurs sprites, utilisez ceci: 

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

Voir this pour plus de détails.

52
Jay Kazama

Placez awesome.png dans Assets/Resources/ (vous pouvez avoir des sous-dossiers) et utilisez:

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

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

Il y a aussi LoadAll that "Charge tous les actifs d'un dossier ou d'un fichier sur le chemin d'accès dans un dossier Resources."

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

Resources.Load recherche dans le répertoire "Assets/Resources" C’est pourquoi vous devez le faire 

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

ou

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

avec spritesPath comme chemin relatif . Si vous devez tout charger à partir du dossier "Assets/Resources/Sprites", vous devez écrire uniquement "Sprites".

après cela, vous pouvez simplement faire ce qui suit: 

var Sprite = sprites[0];

ou 

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

Vous devez entrer le chemin complet de l'actif. Dans ce cas, essayez d'utiliser le chemin "Sprites/Graphics_3".

0
ChrisWebb

La référence de script de Unity ne dit pas que vous avez besoin d'écrire <Sprite> juste après Load. J'ai donc eu un problème avec le chargement des sprites, bien que mon sprite soit dans le répertoire des ressources.

0
Andrey Bocharkov