2017-04-10 50 views
-1

我願意通過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; 
        } 
       } 

錯誤11設置禁用狀態,不能修改 「UnityEngine.UI.Selectable.spriteState」的返回值,因爲它不是一個變量

另外是有任何內置功能(功能)可用,自動更改我的按鈕狀態,我不寫代碼管理精靈?

回答

0

您可以使用Button.interactable更改Button狀態。

禁用:

BtnToChange.interactable = false; 

啓用:

BtnToChange.interactable = true; 
+0

嘿Mabecr你理解這個問題?我願意改變按鈕的狀態,我不想主動禁用它 –

+0

您可能可以使用BtnToChange.isInterractable()= false禁用按鈕 – Mabecr

0

答案是在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; 
    } 
} 
+0

這不好!答案已經由@Mabecr –

+0

給出了,你添加了一條評論,內容是_「嗨,Mabecr你明白了這個問題嗎?我願意改變按鈕的狀態,我不想主動去激活它」_。我猜他/她沒有回答你的問題。如果Mabecr的解決方案符合您的需求,請將其標記爲正確的答案。 – Hellium

+0

你可以看到你自己的答案是一樣的 –