Godot中TextureButton设置texture报错:Invalid set index 'texture'
错误原因
你遇到的错误核心是TextureButton不存在texture这个属性。TextureButton继承自BaseButton,它的纹理是按交互状态(正常、悬停、按下等)单独配置的,和普通Sprite节点的texture属性逻辑不同。
修复代码
修改ITEM_SPRITE.gd中的setItem函数,将self.texture替换为对应状态的纹理属性,最常用的是texture_normal(设置按钮正常状态下的纹理):
tool extends TextureButton export(Resource) var item setget setItem onready var labelText = $RichTextLabel func addQuant(addedQuant :int): item.addQuant(addedQuant) func setItem(newItem : Resource): item = newItem # 替换为texture_normal self.texture_normal = item.getTexture() labelText.text = str(newItem.getHover())
额外优化与排查
- 空值防护:避免
item或纹理为空时报错,可添加判断逻辑:func setItem(newItem : Resource): if not newItem: return item = newItem if item.getTexture(): self.texture_normal = item.getTexture() labelText.text = str(newItem.getHover()) - 多状态纹理配置:如果需要按钮在悬停、按下时显示不同效果,可对应设置
texture_hover、texture_pressed等属性。 - 导出变量无需修改:你的
ITEM类中export(Texture)的写法完全正确,不需要改成StreamTexture,Godot会自动处理纹理类型的适配。
内容的提问来源于stack exchange,提问作者B0T_Alan
相关产品推荐
相关产品推荐

