为什么资源.负载& lt; Sprite>返回null
本文关键字:Sprite 返回 null lt 资源 负载 为什么 | 更新日期: 2023-09-27 18:15:16
我的项目有多个位于Assets' sprites的精灵,我想用c#脚本加载。
我已经测试了这个:
Sprite myFruit = Resources.Load <Sprite> ("Graphics_3");
但myFruit
仍然为空
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创建一个新的精灵来解决这个问题。