unity UI 通过代码实现按钮状态转换

Unity UI Button State Transition through code

我愿意通过 C# 中的代码更改按钮状态(按下、停用、突出显示)。就像某些动作一样,我想将按钮状态切换为停用状态。我该怎么做?

我试图设置按钮状态,但我没有找到任何 属性 接受 spriteState。 我试图通过这个设置禁用状态

        public Sprite activeBtnState;
        public Sprite deactiveBtnState;//button disable sprite that will be applied
        public Button BtnToChange;//button whoes state require to change

        public void NavigationTask() {
         if (isBtnActive)
                    {
                        BtnToChange.interactable = false;
                        BtnToChange.spriteState.disabledSprite = deactiveBtnState;
                    }
                    else
                    {
                        BtnToChange.interactable = true;
                    }
              }

Error 11 Cannot modify the return value of 'UnityEngine.UI.Selectable.spriteState' because it is not a variable

此外,是否有任何内置功能(功能)可用,可以自动更改我的按钮状态,我不编写代码来管理精灵?

您可以使用 Button.interactable 更改 Button 状态。

禁用:

BtnToChange.interactable = false;

启用:

BtnToChange.interactable = true;

答案在documentation:

//Creates an instance of a sprite state (This includes the highlighted, pressed and disabled sprite.
// Assign the sprites in edit mode
public SpriteState sprState = new SpriteState(); // <- IMPORTANT DECLARATION
public Button BtnToChange;

// You can even change the transition type
public Selectable.Transition transition ;

 public void NavigationTask()
 {
     if (isBtnActive)
     {
         BtnToChange.interactable = false;
         BtnToChange.spriteState = sprState ; // <- IMPORTANT LINE
     }
     else
     {
         BtnToChange.interactable = true;
     }
 }