Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一资源。加载精灵返回空值_C#_Unity3d_Resources_Sprite - Fatal编程技术网

C# 统一资源。加载精灵返回空值

C# 统一资源。加载精灵返回空值,c#,unity3d,resources,sprite,C#,Unity3d,Resources,Sprite,好吧,我已经在这件事上把头撞到墙上了。。。正如标题所说,Resource.Load(“icons_3”);正在返回null。我尽可能地减少代码的使用来解决问题(简化代码)。这是我的 icon.sprite = Resources.Load<Sprite>(items[i].item.itemIcon); icon.sprite=Resources.Load(items[i].item.itemcon); 很简单。项目图标为“图标3” 这是来自设置为多个的精灵(将精灵表切片)。我可

好吧,我已经在这件事上把头撞到墙上了。。。正如标题所说,Resource.Load(“icons_3”);正在返回null。我尽可能地减少代码的使用来解决问题(简化代码)。这是我的

icon.sprite = Resources.Load<Sprite>(items[i].item.itemIcon);
icon.sprite=Resources.Load(items[i].item.itemcon);
很简单。项目图标为“图标3” 这是来自设置为多个的精灵(将精灵表切片)。我可以手动将精灵拖动到对象上,但这无法达到目的。 sprite工作表位于Assets/Resources/目录中,因此它应该只加载名称。最初它位于Resources/Sprites文件夹中,但为了缩减所有内容,我将其上移到了一个目录中。
所以我对这件事完全不知所措。是因为它是雪碧床单吗?我是否需要使用其他方法从精灵表加载精灵?谢谢大家的帮助。

做了一个快速测试,只是为了确认一下

void Start()
{
    SpriteRenderer sr = gameObject.GetComponent<SpriteRenderer>();
    sr.sprite = Resources.Load<Sprite>("Sprites/BlueBlock");
}
void Start()
{
spriteender sr=gameObject.GetComponent();
sr.sprite=Resources.Load(“sprite/BlueBlock”);
}
精灵位于
资产/Misc/Resources/Sprites/

很好,所以我猜你在别的地方犯了个错误

必须做到这一点:

  • 您的精灵必须设置为纹理类型
    精灵(2D和UI)
    。 这将在精灵中创建一个“子精灵”(使用精灵编辑器),默认情况下,至少在它是单个精灵的情况下。如果它是多个,那么它的名称可能与主精灵不同,因此请确保您拥有正确的名称。确保您提供给负载的整个路径是正确的(如我所知,区分大小写)
编辑:


对于设置为“多”并被切片的精灵,您需要使用
资源。LoadAll
。这些精灵有一个name属性,您可以使用它在循环中进行搜索。或者,您可以创建一个字典(以字符串作为名称)或更复杂的sprite atlas。

仅为了利用旧的解决方案,如果您首先将sprite加载到变量中会发生什么<代码>var loadSprite=Resources.Load(“图标3”)也返回null。我甚至不确定Resources.Load()是否使用了泛型类型转换。您是否尝试过资源。将(“图标_3”)加载为Sprite?var sprite=Resources.Load(“Grass50x50”);是的,它使用泛型类型转换。这两种方法我都试过了。不,我想我在任何地方都没有犯错误。我认为问题在于雪碧是雪碧表的一部分。我已经切换并使用LoadAll,然后使用一个带有linq的列表进行排序并找到我要找的精灵。这应该不是问题。如果您使用精灵编辑器“子精灵”精灵工作表,显然需要使用您为子精灵指定的名称才能获得正确的名称。听起来你直接提到了精灵表。这也是我的想法。我甚至试着直接给它命名,但没用。出于某种原因,处理精灵的唯一方法是加载整个工作表,然后我可以按名称找到它。我将稍后在家时尝试使用精灵工作表。现在无法访问unity。好的,似乎无法对多精灵使用Load()。对如何解决这个问题做了一些编辑。