UGUI 按钮事件案例

2020-11-11 14:47发布

UGUI 点击按钮切换图片案例:

主要方法: 动态为按钮注册方法

通过方法获取点击按钮名称(知道那个按钮被点击)

切换图片的方法


代码挂到Canvas(画布)上:并且拖拽为公开属性赋值

左边的按钮点击事件,使用了代码动态赋值,,

右边按钮可以同步操作,我这里使用属性面板赋值了,,步骤(点击加号,把挂载代码的游戏物体拖拽赋值,然后右面的方法选择自己写的方法名,,,点击按钮的时候方法就会执行了)


编写如下代码:即可实现点击按钮图片顺序切换

using UnityEngine;

using UnityEngine.EventSystems;

using UnityEngine.UI;

 

public class SwapImage : MonoBehaviour {

 

    public Image bgimage;      //默认显示的背景图片 (注意类型)

    public Sprite[] imagearr;   //要切换的图片数组

 

    private string btn_name;   //点击的按钮名称

    private int i=0;             //图片数组的索引

 

    public Button btn_left;   //声明左面按钮    

 

    void Start()

    {

        //找到左边按钮并且获取其身上组件

        btn_left = this.gameObject.transform.Find("Button_Left").GetComponent<Button>();

        //为onclick注册方法

        btn_left.onClick.AddListener(Swap);

    }

 

    //注册到按钮上的切换图片的方法

    public void Swap()

    {

        //获取点击按钮的名称

        btn_name = EventSystem.current.currentSelectedGameObject.name;

 

        if (btn_name == "Button_Left")  //点击名称为Button_Left的按钮

        {

 

            //如果当前图片是图片数组的第一张,就切换到最后一张           

            if (i < 0) { i = imagearr.Length - 1; }

            //切换图片

            bgimage.overrideSprite = imagearr[i--];

            //Debug.Log(i);

        }

        else   //点击名称为Button_Right的按钮

        {

 

            if (i > imagearr.Length - 1) {i = 0; }

            //切换图片

            bgimage.overrideSprite = imagearr[i++];

        }

 

    }

}

//-------------另一种方式-----------------------

using UnityEngine;

using UnityEngine.UI;

 

public class UIShopping : MonoBehaviour {

 

    //需要更换的图片

    public Image Hero;

 

    //英雄图片数组

    public Sprite[] imagearr;

    //图片数组的索引  

    private int i;

 

    //声明按钮引用

    public Button btn_left; 

    public Button btn_right;

 

    // Use this for initialization

    void Start () {

        //找到左边按钮并且获取其身上组件  

        btn_left = GameObject.Find("Left_Btn").GetComponent<Button>();

        //为onclick注册方法  

        btn_left.onClick.AddListener(SwapLeft);

        //右面同理

        btn_right = GameObject.Find("Right_Btn").GetComponent<Button>();

        btn_right.onClick.AddListener(SwapRight);

    }

 

    public void SwapLeft()

    {

 

        //如果当前图片是图片数组的第一张,就切换到最后一张             

        if (i < 0) { i = imagearr.Length - 1; }

        //切换图片  

        Hero.overrideSprite = imagearr[i--];

    }

    public void SwapRight() { 

 

        if (i > imagearr.Length - 1) { i = 0; }

        //切换图片  

        Hero.overrideSprite = imagearr[i++];

    }

 

}



//-------------另一种方式-----------------------
using UnityEngine;
using UnityEngine.UI;
public class UIShopping : MonoBehaviour {
//需要更换的图片
public Image Hero;
//英雄图片数组
public Sprite[] imagearr;
//图片数组的索引
private int i;
//声明按钮引用
public Button btn_left;
public Button btn_right;
// Use this for initialization
void Start () {
//找到左边按钮并且获取其身上组件
btn_left = GameObject.Find("Left_Btn").GetComponent();
//为onclick注册方法
btn_left.onClick.AddListener(SwapLeft);
//右面同理
btn_right = GameObject.Find("Right_Btn").GetComponent();
btn_right.onClick.AddListener(SwapRight);
}
public void SwapLeft()
{
//如果当前图片是图片数组的第一张,就切换到最后一张
if (i < 0) { i = imagearr.Length - 1; }
//切换图片
Hero.overrideSprite = imagearr[i--];
}
public void SwapRight() {
if (i > imagearr.Length - 1) { i = 0; }
//切换图片
Hero.overrideSprite = imagearr[i++]; }
}


作者:Czhenya

链接:https://czhenya.blog.csdn.net/article/details/77920904

来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。