unity 简单的图片UI圆盘滑动

本文介绍了一种使用Unity实现的滑动圆盘界面,该界面能够在滑动时自动切换按钮显示。通过在圆盘上放置按钮并利用特定脚本,实现了按钮随圆盘滑动而动态移入和移出屏幕的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说一下效果,滑动圆盘,最上面得按钮会移出屏幕,从最下面出现。
想法:1 在圆盘的中间偏左有一个标志图片,滑动圆盘,当最上面的按钮的X值小于标志图片的X值时,将按钮加入到一个List列表中,并将按钮设置为false,布尔设置为false
2 当圆盘的X值大于标志图片的x值,将列表中的按钮赋值给圆盘,设置为True;

首先在UI上创建一个圆盘,放在Canvas右侧,每个子物体一次旋转30°。

面板上格式
去掉子物体上的Image组件,然后在左侧放置几个Button按钮(颜色图标自己设置),效果如图
然后在圆盘中心偏左一点放置一个空物体作为标志(下文会提到),
UI上操作完成,下面是代码部分
在Canavs上挂载一下脚本
public class Tou_Click : MonoBehaviour {
    public GameObject Pos;
    private float speed;
    public List<GameObject> list_unuse;
	// Use this for initialization
	void Start () {
        speed = 60f;
	}
	
	// Update is called once per frame
	void Update () {
        Touch_Click();

    }


    public void Touch_Click()
    {
        if (Input.GetMouseButton(0))   //用于PC端
        {
            Pos.GetComponent<RectTransform>().eulerAngles -= Pos.transform.forward * speed * Time.deltaTime * Input.GetAxis("Mouse Y");
        }

        if (Input.touchCount>0)     //用于手机端
        {
            Touch touch = Input.GetTouch(0);
            if (touch.phase==TouchPhase.Began)
            {
                
            }
            if (touch.phase==TouchPhase.Moved)
            {
                Pos.GetComponent<RectTransform>().eulerAngles -= Pos.transform.forward * speed * Time.deltaTime*touch.deltaPosition.y;
               
            }
            if (touch.phase==TouchPhase.Ended)
            {

            }
        }
        
    }

    
}






然后在圆盘每个子物体上都挂一个下一个脚本
public class Pos_r : MonoBehaviour {

    public GameObject button;
    public bool isHave;
    private GameObject flag;
    private Tou_Click tou_Click;
	// Use this for initialization
	void Start () {
        flag = GameObject.Find("Flag");
        tou_Click = GameObject.Find("Canvas_Menu").GetComponent<Tou_Click>();
    }
	
	// Update is called once per frame
	void Update () {
        HoldButton();
        RemovrButton();
        SetButton();
    }

    public void HoldButton()
    {
        if (isHave==true)
        {
            button.transform.position = transform.position;
        }
    }

    public void RemovrButton()
    {
        if (isHave==true && transform.position. x>flag.transform.position.x)
        {
            tou_Click.list_unuse.Add(button);
            button.SetActive(false);
            button = null;
            isHave = false;
            Debug.Log("移除");
        }
    }

    public void SetButton()
    {
        if (isHave==false && transform.position.x<flag.transform.position.x)
        {
            button = tou_Click.list_unuse[0];
            button.SetActive(true);
            isHave = true;
            tou_Click.list_unuse.RemoveAt(0);
            Debug.Log("添加");
        }
    }
}

说明一下在挂有button按钮的圆盘子物体上 isHave 设置为 True,button设置为当前圆盘子物体上的Button。

简单的滑动圆盘就做好的了,至于后面的按钮设置和操作,根据各自得项目需求来定


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值