Unity报错:Sprite类型无sprite定义或适配的扩展方法
问题解决:Unity中Sprite类型无sprite属性报错
报错信息(中文翻译)
Sprite 类型没有定义 'sprite' 属性,也找不到接受 Sprite 类型作为第一个参数的可访问扩展方法 'sprite'
问题原因
你在代码里把artworkSprite声明成了Sprite类型,但只有Unity的Image组件才有.sprite属性——Sprite本身是图片资源对象,不存在这个属性,这就是报错的核心原因。
修复步骤
- 修正变量类型:将代码里的
public Sprite artworkSprite;改为public Image artworkSprite; - 编辑器赋值:在Unity编辑器中,把用来显示角色头像的Image组件拖到这个变量的引用槽中
- 保留赋值逻辑:
UpdateCharacter方法里的artworkSprite.sprite = character.characterSprite;无需修改
修复后的完整代码
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CharacterManager : MonoBehaviour { public CharacterDatabase characterDB; public Text nameText; public Image artworkSprite; // 修正为Image类型 private int selectedOption = 0; void Start() { UpdateCharacter(selectedOption); } public void NextOption() { selectedOption++; if(selectedOption >= characterDB.CharacterCount) { selectedOption = 0; } UpdateCharacter(selectedOption); } public void BackOption() { selectedOption--; if(selectedOption < 0) { selectedOption = characterDB.CharacterCount - 1; } UpdateCharacter(selectedOption); } private void UpdateCharacter(int selectedOption) { Character character = characterDB.GetCharacter(selectedOption); artworkSprite.sprite = character.characterSprite; nameText.text = character.characterName; } }
内容的提问来源于stack exchange,提问作者Mohammed Aws
相关产品推荐
相关产品推荐

