您当前的位置: 首页 >  unity
  • 4浏览

    0关注

    193博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity圆形、多边形UI点击触发事件

我寄人间雪满头丶 发布时间:2019-08-20 11:48:49 ,浏览量:4

前言

需求是点击圆盘UI转动。最开始的想法是用UI的EventSystem系统,但是发现UI的默认外框都是方形的,无法准确的点击。

思路

既然用不了UI的事件系统,那就使用collider2D来实现多边形效果。首先给UI添加Collider2D组件,然后把collider编辑成UI的形状,最后是编辑代码部分。

代码

我这里是实现的是鼠标按住后会一直执行方法,抬起后停止。

    void Update()
    {
        if (!isGameOver && Input.GetMouseButtonDown(0))
        { 
			//核心代码 接收鼠标点的2Dcollider,其余实现代码可以选择性忽略
            RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

            if (hit.collider != null)
            {
            	//判断点击的物体名字
                if(hit.collider.name == small.name|| hit.collider.name == middle.name|| hit.collider.name == big.name)
                {
                    go = hit.collider.gameObject;
                    go.GetComponent().isDown = true;
                }
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            if(go != null)
                go.GetComponent().isDown = false;
        }
    }

在这里备注一下layerMask参数的用法。它的作用是指定检测某个层的碰撞器。比如1

关注
打赏
1648518768
查看更多评论
立即登录/注册

微信扫码登录

0.0481s