Unity动态修改按钮点击效果

动态修改按钮色块,达到保留选中效果。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Demo: MonoBehaviour
{
    private Button _frontBtn;
    private Button _backBtn;
    
    public ColorBlock NormalColorBlock;

    public ColorBlock chooseColorBlock;
    // Start is called before the first frame update
    void Start()
    {
        _frontBtn = transform.Find("FrontBtn").GetComponent<Button>();
        _backBtn = transform.Find("BackBtn").GetComponent<Button>();
        
        _frontBtn.onClick.AddListener(OnFrontBtn);
        _backBtn.onClick.AddListener(OnBackBtn);
    }

    public void OnBackBtn()
    {
        backSelected = true;
        frontSelected = false;

        FrontBtnNormalUI();
        BackBtnChooseUI();

        FocusCabinetMnr.instance.FocusBack();

    }

    public void OnFrontBtn()
    {
        backSelected = false;
        frontSelected = true;

        FrontBtnChooseUI();
        BackBtnNormalUI();

    }
    
    public void SetButtonsInteractableState(bool flag)
    {
        _returnBtn.interactable = flag;
        _frontBtn.interactable = flag;
        _backBtn.interactable = flag;
    }

    #region 按钮颜色表现

    public void FrontBtnChooseUI()
    {
        _frontBtn.colors = new ColorBlock
        {
            normalColor = chooseColorBlock.normalColor,
            highlightedColor = chooseColorBlock.highlightedColor,
            pressedColor     = chooseColorBlock.pressedColor,
            selectedColor    = chooseColorBlock.selectedColor,
            disabledColor    = chooseColorBlock.disabledColor,
            colorMultiplier    = 1.0f,
            fadeDuration       = 0.1f
        };
    }

    private void FrontBtnNormalUI()
    {
        _frontBtn.colors = new ColorBlock
        {
            normalColor = NormalColorBlock.normalColor,
            highlightedColor = NormalColorBlock.highlightedColor,
            pressedColor     = NormalColorBlock.pressedColor,
            selectedColor    = NormalColorBlock.selectedColor,
            disabledColor    = NormalColorBlock.disabledColor,
            colorMultiplier    = 1.0f,
            fadeDuration       = 0.1f
        };
    }

    private void BackBtnChooseUI()
    {
        _backBtn.colors = new ColorBlock
        {
            normalColor = chooseColorBlock.normalColor,
            highlightedColor = chooseColorBlock.highlightedColor,
            pressedColor     = chooseColorBlock.pressedColor,
            selectedColor    = chooseColorBlock.selectedColor,
            disabledColor    = chooseColorBlock.disabledColor,
            colorMultiplier    = 1.0f,
            fadeDuration       = 0.1f
        };
    }

    private void BackBtnNormalUI()
    {
        _backBtn.colors = new ColorBlock
        {
            normalColor = NormalColorBlock.normalColor,
            highlightedColor = NormalColorBlock.highlightedColor,
            pressedColor     = NormalColorBlock.pressedColor,
            selectedColor    = NormalColorBlock.selectedColor,
            disabledColor    = NormalColorBlock.disabledColor,
            colorMultiplier    = 1.0f,
            fadeDuration       = 0.1f
        };
    }

    #endregion
    
   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值