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

news2024/9/23 23:21:52

一、常规矩形的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函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【时时三省】(C语言基础)指针进阶 例题5

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 abcdef是个常量字符串 把首地址a放在了p里面 第一个p 算的是指针变量的大小 它打印就是4或者8 第二个p1 p本来是a的地址 1就是b的地址 是地址就是打印四或者八 …

chapter14-集合——(List-LikedHashSet)——day18

目录 528-LikedHashSet介绍 529-LikedHashSet源码介绍 528-LikedHashSet课堂练习 528-LikedHashSet介绍 529-LikedHashSet源码介绍 528-LikedHashSet课堂练习

【计网】从零开始认识网络socket

优于别人&#xff0c;并不高贵&#xff0c; 真正的高贵应该是优于过去的自己。 --- 海明威 --- 从零开始认识网络socket 1 网络通信流程2 IP地址 VS MAC地址3 网络socket3.1 理解源 IP 地址和目的 IP 地址3.2 传输层的典型代表3.3 网络字节序3.4 socket编程基础 1 网络通信流…

高压直流接触器及使用注意事项

高压直流接触器及使用注意事项 1.概述2.接触器和继电器有什么区别3.节能线圈4.安装位置5.直流继电器线圈抑制6.高压继电器和接触器有哪些应用?7.线圈效率的决定因素是什么?对线圈驱动器有什么要求?8.负载极性对接触器的影响9.触点参数注意事项10.线圈供电要求1.概述 航空接…

基于单片机实现的的多点分布室内环境监测系统

基于STM32单片机为基础设计的一款室内环境监测系统程序源码 程序分为接收端和采集端两部分 接收端与采集端均以STM32单片机作为控制核心&#xff0c;两者通过ZigBee无线通信技术进行连接。接收端主要用于接收数据并将其实时显示以及报警。 采集端主要用于监测室内环境的各类数…

【Python工具】Python 装饰器实现统计函数执行时长

文章目录 1、背景2、轮子 1、背景 业务基本代码堆积完毕了&#xff0c;部分流程需要调优&#xff0c;想着在几个关键执行路径上进行时间记录&#xff0c;类似 SQL 慢日志一样的方法&#xff0c;方便进行性能问题发现。 了解了下&#xff0c;应该是采用装饰器实现是代码侵入最…

林草湿地址、导出echart为word

2.导出 // 导出exportDoc () {this.loading truelet arrRefs [this.$refs.endChart, this.$refs.processChart, this.$refs.officeEndChart]setTimeout(() > {Promise.all(arrRefs.map((canvasDom) > {return this.html2canvasHandle(canvasDom)})).then(res > {let…

如何让潜意识帮你实现你的目标

潜意识的力量是意识的3万倍以上 如果你有一个宏大的目标&#xff0c;怎么借助潜意识实现你的目标呢 比如&#xff0c;我的目标是&#xff1a;帮助100万人颠覆潜意识&#xff0c;实现人生蜕变&#xff0c;并且培养一万名潜意识开发导师 这么宏大的一个目标&#xff0c;怎么让…

B-树底层原理

一、B-树介绍 定义&#xff1a; B-树&#xff08;B-Tree&#xff09;是一种自平衡的树形数据结构&#xff0c;广泛应用于数据库和操作系统中。它的设计目标是减少搜索、顺序访问、插入和删除操作中比较次数和移动次数&#xff0c;特别适合于磁盘中数据的存储和检索。 性质&a…

运维团队日志管理策略参考

在运维工作中&#xff0c;日志管理是一项至关重要的任务。有效的日志管理不仅能够帮助运维团队实时监控系统状态、发现潜在问题&#xff0c;还能为故障排查和系统性能优化提供宝贵的数据支持。本文结合运维行业的实际需求&#xff0c;介绍了一套全面的日志管理策略&#xff0c;…

AutoDroid: LLM-powered Task Automation inAndroid论文学习

光看题目怎么和上一篇差不多&#xff1f;又是纯用LLM的&#xff1f; 当然还是有一点不一样的&#xff1a; 这里的最大特点是加上了UI领域知识&#xff0c;可以大幅增强LLM在处理UI方面的知识的能力。根据文章的说法&#xff0c;使用了这招他们的LLM可以吊打GPT4V&#xff0c;准…

node.js 完全卸载和下载配置

一、介绍 &#xff08;1&#xff09;node.js Node.js发布于2009年5月&#xff0c;由Ryan Dahl开发&#xff0c;是一个基于ChromeV8引擎的JavaScript运行环境&#xff0c;使用了一个事件驱动、非阻塞式I/O模型&#xff0c; [1]让JavaScript 运行在服务端的开发平台&#xff0c…

Linux开发工具的使用

文章目录 vim的使用基本模式介绍光标当前行操作光标快速定位&#xff08;命令行模式&#xff09;&#xff1a;插入模式的三种方式&#xff08;命令行模式&#xff09;&#xff1a;vim基本操作&#xff08;命令行模式&#xff09;底行模式的操作 Linux编译器 - gcc/g的使用Linux…

录屏软件免费版:四款热门工具全面解析!

日常生活或工作中&#xff0c;我们经常有记录屏幕的需求。今天&#xff0c;就让我们来探索几款市面上广受欢迎的免费录屏软件&#xff0c;它们不仅功能强大&#xff0c;而且完全免费&#xff0c;让屏幕录制体验更加流畅和高效。 福昕录屏大师 直达链接&#xff1a;www.foxits…

比亚迪海豹06这油耗,丈母娘都叫好

文 | AUTO芯球 作者 | 雷慢 刚一朋友问我 有没有什么好看、价格低&#xff0c; 车大、油耗还低的车&#xff0c; 开到女盆友家能第一个动筷子。 哎&#xff0c;我要给你说的这车&#xff0c; 能不能第一个动筷子 首先看你未来的丈母娘喜欢什么货色的&#xff0c; 其次你…

仿最近老火的羊了个羊 三消游戏源码,两种玩法模式,完整带后台

游戏玩儿法类似于养了个羊&#xff0c;有两种模式&#xff0c;一个是普通版。一个是王者荣耀版。 代码免费下载&#xff1a;百度网盘

广播与组播,超时检测

目录 一.超时检测 必要性 超时检测的设置方法 1. 通过函数自带的参数设置 2. 通过设置套接字属性进行设置 3. alarm函数与sigaction函数结合 二.广播与组播&#xff08;broadcast & multicast&#xff09; 1. 广播&#xff08;udp&#xff09; 理论&#xff1a…

redis底层—网络模型

1.用户空间和内核空间 2.阻塞IO 3.非阻塞IO 4.IO多路复用 select模式的三个问题&#xff1a; 能监听的FD最大不超过1024 每次select都需要把所有要监听的FD都拷贝到内核空间 每次都要遍历所有FD来判断就绪状态 poll模式的问题&#xff1a; poll利用链表解决了select中监听FD上限…

信号保存和处理

把上一篇回顾一下吧&#xff1a;共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;进程不再通过执行进入内核的系统调用来传递彼此的数据 共享内存的数据结构&#xff1a; struct shmid_ds {…

3D技术在电商行业的应用有哪些?

‌3D技术在电商行业的应用广泛且多样化&#xff0c;主要涵盖以下几个方面‌&#xff1a; ‌1、商品展示‌&#xff1a; 通过3D模型进行全方位的展示&#xff0c;支持720旋转和任意缩放&#xff0c;使消费者能够更直观地了解产品的外观、结构和特点。这种展示方式不仅提高了消…