Unity中Resources.Load<Sprite>返回null问题求助
问题解决:Resources.Load无法加载Sprite的原因及修复
核心问题是Resources.Load的路径格式错误,具体修正和排查点如下:
1. 修正路径格式
Resources.Load的路径是从Assets/Resources文件夹内部开始计算的,不能以斜杠/开头,也不需要添加文件后缀(如.png)。你的代码里路径开头多了个/,导致找不到资源。
修正后的代码:
foreach(Card card in cards){ var i = new GameObject(card.ToString()); // card.ToString()格式固定为“数字 of 花色”,例如"2 of Clubs" // 去掉路径开头的/,直接从Resources下的子目录开始写 var cardImage = Resources.Load<Sprite>("Materials/Sprites/" + card.ToString()); i.AddComponent<Image>(); var imageComponent = i.GetComponent<Image>(); // 增加错误日志方便排查 if(cardImage != null) { imageComponent.sprite = cardImage; } else { Debug.LogError("无法找到Sprite资源:" + card.ToString()); } }
2. 额外排查点
- 路径大小写匹配:Unity的资源路径区分大小写,确认代码里的路径
Materials/Sprites和实际文件夹名称完全一致,图片文件名和card.ToString()的输出(比如"2 of Clubs")大小写、空格完全匹配。 - 资源导入设置:确保所有图片的Texture Type设置为
Sprite(2D and UI),Sprite Mode为Single,右键图片选择Reimport重新导入资源。 - 资源位置确认:所有图片必须放在
Assets/Resources目录或其子目录下,你的Materials/Sprites子目录位置是正确的,这点没问题。
内容的提问来源于stack exchange,提问作者DarthSwashbuckler
相关产品推荐
相关产品推荐

