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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。