切換
舊版
前往
大廳
主題

UGUI Button

CatMaster | 2021-04-12 15:55:33 | 巴幣 0 | 人氣 118

按鈕有兩種動畫表演 選中的表演A沒被選中的表演B
用Script代替就可以不用每個按鈕OnClick各別設定
void Awake ()
        {
            foreach (Transform Child in gameObject.transform) {
                if (Child.GetComponent<Button> () == true) {
                    _Button.Add (Child.gameObject);
                    _Background.Add (Child.GetChild (0).gameObject);
                    _Image.Add (Child.GetChild (1).gameObject);
                    _Number.Add (Child.GetChild (2).gameObject);
                    _ButtonClick.Add (Child.GetComponent<Button> ());
                }

            }

            for (int i = 0; i != _ButtonClick.Count; i++) {
                ClickButton (_ButtonClick [i], i);
            }
        }

        void ClickButton (Button b, int Number)
        {
            b.onClick.AddListener (() => ClickButtonListener (Number));
        }

        void ClickButtonListener (int Number)
        {
            //Debug.Log (Number);
            for (int i = 0; i != _ButtonClick.Count; i++) {
                _ButtonClick [i].enabled = false;
                if (i == Number) {
                    _Button [i].GetComponent<Animator> ().SetTrigger ("Select");
                    _Background [i].GetComponent<Animator> ().SetTrigger ("Select");
                    _Image [i].GetComponent<Animator> ().SetTrigger ("Select");

                    //_Image[i].GetComponent<Animator>().OnStop.AddListener (() => effectCount--);
                    continue;
                }
                _Button [i].GetComponent<Animator> ().SetTrigger ("Small");
                _Background [i].GetComponent<Animator> ().enabled = false;
                _Image [i].GetComponent<Animator> ().enabled = false;
                _Background [i].GetComponent<Image> ().sprite = _BlackBackGround;
                _Image [i].GetComponent<Image> ().sprite = _BlackImage [i];
                _Number [i].GetComponent<Image> ().sprite = _BlackNumber [i];
            }
}

foreach (var Item in TagButton)
        {
            Item.onClick.AddListener(() => ButtonCallBack(Item));
        }

void ButtonCallBack(Button ButtonPressed)
    {
        foreach (var Item in PanelGO)
        {
            Item.gameObject.SetActive(false);
        }

        int Select = System.Convert.ToInt32(ButtonPressed.name);
        PanelGO[Select].SetActive(true);
        switch (System.Convert.ToInt32(ButtonPressed.name))
        {
            case 0:
                break;
            case 1:
                break;
            case 2:
                break;
            case 3:
                break;
        }
    }




動態+Function
GetComponent<Button> ().onClick.AddListener(delegate () { BetSystem.Function(); });

不規則按鈕 Alpha區塊設定無法Click
AlphaThreshold = 0.1f;

    void Start()
    {
        gameObject.GetComponent<Image>().alphaHitTestMinimumThreshold = AlphaThreshold;
    }

OnClick取得自身物件實驗
Button ActionButton;

void Start()
    {
        ActionButton = gameObject.GetComponent<Button>();
        ActionButton.onClick.AddListener(delegate { GetButton(gameObject.name); });
    }

public void GetButton(string Name)
    {
        Debug.Log(Name);
    }

創作回應

更多創作