当我的&#34;英雄选择菜单&#34; <我> 创建按钮正在创建。这些按钮将获取相关图像/精灵,具体取决于&#34; Hero&#34;他们将代表。
我有以下方法,但我不明白我必须将精灵应用到哪个变量。
Button _thisButton;
Sprite _normalSprite;
Sprite _highlightSprite;
protected override void DoStateTransition (SelectionState state, bool instant){
switch (state) {
case Selectable.SelectionState.Normal:
_thisButton.image = _normalSprite; //.image is not correct
Debug.Log("statenormalasd");
break;
case Selectable.SelectionState.Highlighted:
_thisButton.image = _normalSprite; //.image is not correct
//...
}
状态肯定在起作用,我通过Debug.Log(...);
确认了它问题是:如果不是.image,必须更改哪个值?
提前致谢, Csharpest
答案 0 :(得分:5)
您正在尝试将精灵附加到按钮组件。精灵位于Image组件中。看看这个!
GameObject buttonGameObject;
Sprite newSprite;
void Start() {
buttonGameObject.GetComponent<Image>().sprite = newSprite;
}
但是为了修复你的代码,你可能会做类似的事情:
Button _thisButton;
Sprite _normalSprite;
Sprite _highlightSprite;
protected override void DoStateTransition (SelectionState state, bool instant){
switch (state) {
case Selectable.SelectionState.Normal:
_thisButton.GetComponent<Image>().sprite = _normalSprite;
Debug.Log("statenormalasd");
break;
case Selectable.SelectionState.Highlighted:
_thisButton.GetComponent<Image>().sprite = _normalSprite;
}
答案 1 :(得分:2)
如果你想在脚本中更改按钮spriteswap sprite,你必须使用spriteState
,你可以这样做;
Button _thisButton;
Sprite _normalSprite;
Sprite _highlightSprite;
void ChangeSprites(){
// _thisButton.transition = Selectable.Transition.SpriteSwap;
var ss = _thisButton.spriteState;
_thisButton.image.sprite = _normalSprite;
//ss.disabledSprite = _disabledSprite;
ss.highlightedSprite = _highlightSprite;
//ss.pressedSprite = _pressedSprie;
_thisButton.spriteState = ss;
}
如果您使用普通按钮并选择SpriteSwap,Unity会自动交换按钮,如果您需要更改转换选项,则取消注释该函数的第一行。