Unity Resource.Load sprite返回null

时间:2016-03-14 23:04:21

标签: c# unity3d resources sprite

好吧,我已经用足够的力量击败了我的头......正如标题所说,Resource.Load(“icons_3”);返回null。我尽可能地利用代码来减少它(简化它)。继承人我拥有的东西

icon.sprite = Resources.Load<Sprite>(items[i].item.itemIcon);

非常简单。 itemIcon是“icons_3” 这是一个设置为多重的精灵(切片的精灵表)。我可以手动将精灵拖到对象上,但这会破坏目的。 精灵表位于Assets / Resources /目录中,因此它应仅加载名称。最初它位于Resources / Sprites文件夹中,但为了减少所有内容,我将其移动到目录中。 因此我完全失去了这个。是因为它的精灵表吗?我是否需要使用另一种方法从精灵表中加载精灵?感谢所有人提前帮助。

1 个答案:

答案 0 :(得分:0)

快速测试只是为了确保。

void Start()
{
    SpriteRenderer sr = gameObject.GetComponent<SpriteRenderer>();
    sr.sprite = Resources.Load<Sprite>("Sprites/BlueBlock");
}

Sprite位于Assets/Misc/Resources/Sprites/

工作得很好,所以我猜你在其他地方犯了错误。

必须这样做:

  • 您的精灵必须设置为纹理类型Sprite (2D and UI)。 这将创建一个&#34;子精灵&#34;默认情况下,在Sprite中(使用Sprite Editor)至少是一个精灵。如果它是多个,那么它的名称可能与主精灵不同,所以请确保你有这个权利。确保您为Load提供的整个路径是正确的(区分大小写,如我所知)。

编辑:

对于设置为多个并被切片的精灵,您需要使用Resources.LoadAll。这些精灵有一个名称属性,您可以使用它来循环搜索。或者,您可以创建一个Dictionary(字符串为名称)或更复杂的精灵地图集。