欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > Unity3d中制作触发区域为圆形的按钮

Unity3d中制作触发区域为圆形的按钮

2025/5/24 11:05:08 来源:https://blog.csdn.net/benben044/article/details/142091350  浏览:    关键词:Unity3d中制作触发区域为圆形的按钮

一、常规矩形的Button制作

设置Highlighed Color为绿色。

此时当鼠标在button上方时会显示绿色:

二、圆形Button制作

在Button的Image中选择Source Image为Knob。

程序运行时,鼠标在矩形和圆形之间的区域,button还是会变成绿色。

所以,这种方法只是改变了Image的展示,但是并没有改变触发区域。

三、重写Image组件的触发区域

参考代码:新手问个可能很低级的问题,圆形按钮怎么做,uGUI默认都是矩形【unity3d吧】_百度贴吧

创建CustomCircleCollider脚本如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class CustomCircleCollider : Image
{private CircleCollider2D circleCollider;protected override void Start(){base.Start();circleCollider = GetComponent<CircleCollider2D>();}public override bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera){bool isRay = base.IsRaycastLocationValid(screenPoint, eventCamera);if(isRay && (circleCollider != null)){bool isTrig = circleCollider.OverlapPoint(screenPoint);return isTrig;}return isRay;}}

我们把这个脚本挂载到button对象上,提示:

这是因为一个物体下只能挂载一个类型的组件一次,此时需要删除原来的Image组件(反勾选是没用的)。

然后:

(1)挂载CustomCircleCollider脚本到Button物体上,并修改Source Image的信息如下:

(2)添加Circle Collider 2D的组件,并编辑碰触区域。

运行程序,此时只有点击Button中的红色区域才会变绿。

collider的类型可以根据实际情况调整,比如换成Capsule collider等,这里只是演示效果。

四、注意事项

脚本中Start函数必须写成示例中的形式:

protected override void Start()

如果只是写成:void Start(),则会报如下的错误:

Warning CS0114 ‘CustomCircleCollider.Start()’ hides inherited member ‘UIBehaviour.Start()’. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.

这个提示我们必须重写Start函数。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词