为什么资源.负载& lt; Sprite>返回null

本文关键字:Sprite 返回 null lt 资源 负载 为什么 | 更新日期: 2023-09-27 18:15:16

我的项目有多个位于Assets' sprites的精灵,我想用c#脚本加载。

我已经测试了这个:

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

myFruit仍然为空

为什么资源.负载& lt; Sprite>返回null

Resources.Load将在Assets/Resources中搜索目录。

如果你想把它放在Sprites目录,然后把它放在Resources(例如Assets/Resources/Sprites)。

然后你可以像这样加载它:

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

还要确保在检查器中将图像类型设置为Sprite。

如果你想加载多个精灵,使用:

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

awesome.png放在Assets/Resources/(您可以有子文件夹)中,并使用:

GetComponent<SpriteRenderer>().sprite = 
    Resources.Load<Sprite>("awesome");  // No file extension.
http://docs.unity3d.com/ScriptReference/Resources.html

还有LoadAll "在资源文件夹的路径上加载文件夹或文件中的所有资源。"

我知道这是一个旧的帖子,但是,如果它仍然不能通过加载资源,那么我们必须添加纹理以及。我是这样做的。

Texture2D texture = Resources.Load<Texture2D>("Sprites/imageName");
Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
btnImage.image.sprite = sprite;

对于这个问题,我需要一个不同的解决方案。当我仔细检查我的精灵时,我看到了下拉菜单"精灵模式"。是空的(尽管我认为这是不可能的)。一旦我选择single并应用更改,问题就解决了。

您需要输入资源的完整路径。在这种情况下,尝试使用路径"Sprites/Graphics_3"。

    Sprite sp = Resources.LoadAll<Sprite> ("Sprites/AI-Avtar") [2] as Sprite;

资源。加载正在搜索目录"资产/资源"这就是为什么你需要做

_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();

Unity的脚本参考并没有说你需要在Load之后写<Sprite>。所以我在加载精灵时遇到了问题,尽管我的精灵是在资源目录下。

我只是使用了资源。加载加载我的精灵,发现结果是Texture2D。所以我用雪碧。使用Textur2D创建一个新的精灵来解决这个问题。