UGUI 按钮事件案例

举报
陈言必行 发表于 2021/08/14 01:15:09 2021/08/14
2.3k+ 0 0
【摘要】 UGUI 点击按钮切换图片案例: 主要方法: 动态为按钮注册方法 通过方法获取点击按钮名称(知道那个按钮被点击) 切换图片的方法 代码挂到Canvas(画布)上:并且拖拽为公开属性赋值 左边的按钮点击事件,使用了代码动态赋值,, 右边按钮可以同步操作,我这里使用属性面板赋值了,,步骤(...
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++];
         }
        }
    


  

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。