UGUI 按钮事件案例

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

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

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

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

   
  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. using UnityEngine.UI;
  4. public class SwapImage : MonoBehaviour {
  5. public Image bgimage; //默认显示的背景图片 (注意类型)
  6. public Sprite[] imagearr; //要切换的图片数组
  7. private string btn_name; //点击的按钮名称
  8. private int i=0; //图片数组的索引
  9. public Button btn_left; //声明左面按钮
  10. void Start()
  11. {
  12. //找到左边按钮并且获取其身上组件
  13. btn_left = this.gameObject.transform.Find("Button_Left").GetComponent<Button>();
  14. //为onclick注册方法
  15. btn_left.onClick.AddListener(Swap);
  16. }
  17. //注册到按钮上的切换图片的方法
  18. public void Swap()
  19. {
  20. //获取点击按钮的名称
  21. btn_name = EventSystem.current.currentSelectedGameObject.name;
  22. if (btn_name == "Button_Left") //点击名称为Button_Left的按钮
  23. {
  24. //如果当前图片是图片数组的第一张,就切换到最后一张
  25. if (i < 0) { i = imagearr.Length - 1; }
  26. //切换图片
  27. bgimage.overrideSprite = imagearr[i--];
  28. //Debug.Log(i);
  29. }
  30. else //点击名称为Button_Right的按钮
  31. {
  32. if (i > imagearr.Length - 1) {i = 0; }
  33. //切换图片
  34. bgimage.overrideSprite = imagearr[i++];
  35. }
  36. }
  37. }

    
  1. //-------------另一种方式-----------------------
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. public class UIShopping : MonoBehaviour {
  5. //需要更换的图片
  6. public Image Hero;
  7. //英雄图片数组
  8. public Sprite[] imagearr;
  9. //图片数组的索引
  10. private int i;
  11. //声明按钮引用
  12. public Button btn_left;
  13. public Button btn_right;
  14. // Use this for initialization
  15. void Start () {
  16. //找到左边按钮并且获取其身上组件
  17. btn_left = GameObject.Find("Left_Btn").GetComponent<Button>();
  18. //为onclick注册方法
  19. btn_left.onClick.AddListener(SwapLeft);
  20. //右面同理
  21. btn_right = GameObject.Find("Right_Btn").GetComponent<Button>();
  22. btn_right.onClick.AddListener(SwapRight);
  23. }
  24. public void SwapLeft()
  25. {
  26. //如果当前图片是图片数组的第一张,就切换到最后一张
  27. if (i < 0) { i = imagearr.Length - 1; }
  28. //切换图片
  29. Hero.overrideSprite = imagearr[i--];
  30. }
  31. public void SwapRight() {
  32. if (i > imagearr.Length - 1) { i = 0; }
  33. //切换图片
  34. Hero.overrideSprite = imagearr[i++];
  35. }
  36. }



  

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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