好吧,我已经把头撞到墙上了.正如标题所述,Resource.Load("icons_3");正在返回null。我已经减少了尽可能多的代码来解决它(简化它)。这是我拥有的
icon.sprite = Resources.Load<Sprite>(items[i].item.itemIcon);
很简单。itemIcon是"icons_3“--这是从一个被设置为多个的雪碧(一个已切片的精灵工作表)中产生的。我可以手动将sprite拖到对象上,但这违背了目的。sprite表位于Asset/Resources/目录中,因此它应该只加载名称。最初它位于Resources/Sprites文件夹中,但是为了减少所有内容,我将它移到了一个目录中。所以这次我完全输了。是因为它是雪碧片吗?是否需要使用另一种方法从雪碧工作表中加载雪碧?谢谢所有提前帮忙的人。
发布于 2016-03-15 10:18:11
做了个快速测试来确保。
void Start()
{
SpriteRenderer sr = gameObject.GetComponent<SpriteRenderer>();
sr.sprite = Resources.Load<Sprite>("Sprites/BlueBlock");
}
雪碧位于Assets/Misc/Resources/Sprites/
。
效果很好,所以我猜你在别的地方犯了个错误。
必须这样做:
Sprite (2D and UI)
。默认情况下,这将在雪碧中创建一个“子精灵”(与雪碧编辑器一起使用),至少如果它是单个雪碧。如果它是多个的话,它的名称可能与主要的sprite不同,所以请确保您有这个权利。确保您给负载的整个路径是正确的(大小写敏感的票价,如我所知)。编辑:
对于设置为多个并被分割的雪碧,您需要使用Resources.LoadAll
。这些精灵有一个name属性,您可以使用它在循环中进行搜索。或者,您可以创建一个字典(以字符串作为名称),也可以创建一个更复杂的雪碧地图集。
https://stackoverflow.com/questions/35999728
复制相似问题