unity3d 为什么Resources.Load< Sprite>返回null?

vfwfrxfs  于 2022-12-04  发布在  其他
关注(0)|答案(9)|浏览(492)

我的项目在Assets\Sprites中有多个我想使用C#脚本加载的sprite。
我已经测试过了:

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

但是myFruit仍然为空。

aurhwmvo

aurhwmvo1#

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");

有关详细信息,请参阅this

aij0ehis

aij0ehis2#

awesome.png放置在Assets/Resources/中(可以有子文件夹),然后用途:

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

http://docs.unity3d.com/ScriptReference/Resources.html
还有LoadAll“加载Resources文件夹路径下的文件夹或文件中的所有资源。"

mwngjboj

mwngjboj3#

我知道这是一个老职位,但如果它仍然不工作,只是加载资源,那么我们必须添加纹理以及。我这样做。

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;
j8ag8udp

j8ag8udp4#

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

amrnrhlw

amrnrhlw5#

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

j2datikz6#

资源.负载在目录“Assets/Resources”中搜索,这就是为什么您需要执行

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

pjngdqdw7#

Unity的脚本参考没有说你需要在Load之后写<Sprite>。所以我在加载sprite时遇到了问题,尽管我的sprite在Resources目录中。

olmpazwi

olmpazwi8#

我刚用了Resources. Load来加载我的sprite,发现结果是Texture2D。所以我用Sprite. Create来创建一个新的带有Texture2D的sprite来解决这个问题。

g2ieeal7

g2ieeal79#

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

相关问题