我的项目有多个sprite位于Assets \ Sprites中,我想用C#脚本加载。
我测试了这个:
Sprite myFruit = Resources.Load <Sprite> ("Graphics_3");
但myFruit
仍为空。
答案 0 :(得分:55)
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。
答案 1 :(得分:3)
将awesome.png
放入Assets/Resources/
(您可以拥有子文件夹),然后使用:
GetComponent<SpriteRenderer>().sprite =
Resources.Load<Sprite>("awesome"); // No file extension.
http://docs.unity3d.com/ScriptReference/Resources.html
还有LoadAll &#34;在资源文件夹中的路径中加载文件夹或文件中的所有资源。&#34;
答案 2 :(得分:0)
您需要输入资产的完整路径。在这种情况下,请尝试使用路径&#34; Sprites / Graphics_3&#34;。
答案 3 :(得分:0)
Sprite sp = Resources.LoadAll<Sprite> ("Sprites/AI-Avtar") [2] as Sprite;
答案 4 :(得分:0)
Resources.Load正在“资产/资源”目录中搜索 这就是你需要做的原因
_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();
答案 5 :(得分:0)
Unity的脚本参考并不表示您需要在<Sprite>
之后立即编写Load
。所以我在加载sprite时遇到了问题,尽管我的精灵在Resources目录中。
答案 6 :(得分:0)
我只是使用Resources.Load加载我的精灵,发现结果是Texture2D。因此,我使用Sprite.Create通过Textur2D创建了一个新的精灵,以解决此问题。
答案 7 :(得分:0)
我知道这是一篇旧帖子,但是,如果仅加载资源仍然无法正常工作,那么我们也必须添加纹理。我是这样做的。
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;