Unity技巧:轻松实现鼠标悬停文本时的动态变色效果
文章目录
- 前言
- 一、Text
- 二、TMP_Text
- 二、颜色转换
- 总结
前言
在游戏或应用中,给用户的界面添加一些小的互动效果能让它们更加吸引人。比如,当策划要求你这样做的时候 ,当用户将鼠标悬停在文字上时,文字颜色改变,这样的效果会让界面看起来更有趣。本文将教你如何在Unity中实现这个效果,将写好的脚本挂载到按钮上即可。
一、Text
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;public class TextColorChange : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{public Color normalColor = Color.blue; // 默认颜色public Color hoverColor = Color.white; // 悬停时颜色private Text textComponent;private void Start(){textComponent = GetComponentInChildren<Text>();if (textComponent == null){Debug.LogError("没有找到Text组件,请确保文本对象是Button的子对象,并且拥有Text组件。");}else{textComponent.color = normalColor;}}public void OnPointerEnter(PointerEventData eventData){if (textComponent != null){textComponent.color = hoverColor; // 悬浮时将字体颜色改为悬停颜色}}public void OnPointerExit(PointerEventData eventData){if (textComponent != null){textComponent.color = normalColor; // 离开时将字体颜色还原为默认颜色}}
}
二、TMP_Text
using UnityEngine;
using TMPro;
using UnityEngine.EventSystems;public class TMPTextColorChange : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{public Color normalColor = Color.blue; // 默认颜色public Color hoverColor = Color.white; // 悬停时颜色private TMP_Text textMeshPro;private void Start(){textMeshPro = GetComponentInChildren<TMP_Text>();if (textMeshPro == null){Debug.LogError("没有找到TMP_Text组件,请确保文本对象是Button的子对象,并且拥有TMP_Text组件。");}else{textMeshPro.color = normalColor;}}public void OnPointerEnter(PointerEventData eventData){if (textMeshPro != null){textMeshPro.color = hoverColor; // 悬浮时将字体颜色改为悬停颜色}}public void OnPointerExit(PointerEventData eventData){if (textMeshPro != null){textMeshPro.color = normalColor; // 离开时将字体颜色还原为默认颜色}}
}
二、颜色转换
如果要使用配置加载,或者用类似#xxxxx的颜色格式进行配置的话,使用以下逻辑封装成适合的方法。
Color sample;
ColorUtility.TryParseHtmlString("#3790E7", out sample);
textMeshPro.color = sample;Text.color = ColorUtility.TryParseHtmlString("#3790E7", out var color) ? color : Color.blue;
总结
使用这些脚本,你可以轻松地在Unity中实现鼠标悬停时改变文字颜色的效果。
相关文章:
Unity技巧:轻松实现鼠标悬停文本时的动态变色效果
文章目录 前言一、Text二、TMP_Text二、颜色转换总结 前言 在游戏或应用中,给用户的界面添加一些小的互动效果能让它们更加吸引人。比如,当策划要求你这样做的时候 ,当用户将鼠标悬停在文字上时,文字颜色改变,这样的效…...
谷歌账号活动异常,或者申诉回来以后需要手机验证的原因,以及验证手机号的错误操作和正确操作
有一些朋友在使用谷歌账号的时候,会遇到无法直接登录的情况,输入用户名、密码以后,提示说账号活动异常,需要验证手机号。 通常有以下两种情形和界面,出现这种情形的原因分别如下。 一、谷歌账号登录需要输入手机号码…...
System V IPC奥秘:解锁共享内存、消息队列与信号量的高效通信之路
🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 🍑system V共享内存 🍒共享内存的原理共享内存数据结构查看和删除共享内存资源的命令 🌻共享内存…...
怎么将pdf转为ppt文件?pdf转ppt的8个方法
在诸多职场与学术交流的场合中,我们时常面临将详尽的PDF文件转化为生动且易于编辑的PPT演示文稿的需求。这一转换不仅是为了满足演示时的灵活性,更是为了提升信息传递的效率与观众的理解度。从简单的在线工具到功能全面的专业软件,我们拥有多…...
【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task03 大咖项目分享 人话八股文Bakwaan_Buddy项目开发尝试
【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task03 人话八股文Bakwaan_Buddy项目开发尝试 Idea: 我们草台班子目前的想法是解决大家计算机学院毕业面临的BUG——不爱背、背不下来八股文,觉得枯燥、烦、工作了用不着,反正就是知识他不进…...
如何在wordpress当中使用插件WP Coder(将html、css、javascript应用到wordpress上)
了解认识阶段 安装并运行好WP Coder之后如下图: 设置全局PHP 禁用gutenberg 输入代码 add_filter(gutenberg_can_edit_post, __return_false, 10); add_filter(use_block_editor_for_post, __return_false, 10); 记得点击save并勾选enable PHP code 禁用之后打…...
ActiveMQ、RabbitMQ、Kafka、RocketMQ在消息回溯、消息堆积+持久化、消息追踪、消息过滤的区别
ActiveMQ、RabbitMQ、Kafka、RocketMQ在消息回溯、消息堆积持久化、消息追踪、消息过滤等方面各有其独特的特点和优势。以下是这四个方面的详细比较: 1. 消息回溯 ActiveMQ:支持消息回溯功能。ActiveMQ可以将消息持久化到磁盘上,因此当需要…...
使用ITextRenderer导出PDF后无法打开问题,提示‘无法打开此文件‘
依赖如下 <!-- https://mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf --> <dependency><groupId>org.xhtmlrenderer</groupId><artifactId>flying-saucer-pdf</artifactId><version>9.1.22</version> &l…...
STL必须掌握的几大常见算法
1. std::sort 功能:对容器中的元素进行排序。 用法: #include <algorithm> #include <vector>std::vector<int> vec = {3, 1, 4, 1, 5, 9}; std::sort(vec.begin(), vec.end());你知道sort内部用的什么排序吗 2. std::reverse 功能:将容器中的元素顺…...
HAproxy 七层负载均衡调度器详解及配置
HAproxy 七层负载均衡 负载均衡技术 负载均衡(Load Balance):一种服务,或基于硬件设备实现的高可用的反向代理技术,是指将特定的业务流量分摊给一个或多个后端的特定服务器或设备,实现高并发处理业务流量…...
Python学习笔记--私有属性、构造方法、析构方法、常用内置方法
目录 私有属性 构造方法 析构方法 常用内置方法 私有属性 1. 私有属性是指在类内可以直接访问、而在类外无法直接访问的属性 2. Python中规定,在定义类时,如果一个类属性名是以__(两个下划线)开头,则该类属性为私…...
4章8节:用R做数据重塑,行列命名和数据类型转换
在R语言中,行列命名和数据类型转换是数据处理中的两个基础性操作。它们不仅对数据的可读性和组织性至关重要,而且在执行数据分析、模型构建和结果解释时也扮演着重要的角色。 一、行和列命名 在数据科学和统计分析中,命名是组织和管理数据的一个重要部分。尤其是在处理复杂…...
浏览器发出请求到响应的过程
客户端发起请求:用户输入URL并回车,浏览器解析URL,生成HTTP请求。 DNS解析:浏览器查看本地hosts文件是否有域名的IP地址映射,如果没有则向DNS服务器发起解析请求,获取域名对应的IP地址。 建立TCP连接&…...
eNSP 华为划分VLAN
SW1: <Huawei>system-view [Huawei]sysname SW1 [SW1]VLAN batch 10 20 //批量划分vlan [SW1]interface GigabitEthernet0/0/1 [SW1-GigabitEthernet0/0/1]port link-type access //设置为access口,access口允许单个vlan通过 [SW1-GigabitEth…...
公用事业公司签署大规模电力供应协议
随着人工智能技术的迅猛发展,美国公用事业公司与数据中心运营商之间的电力供应协议数量显著增加,为未来几季度的销售和利润增长奠定了基础。根据高盛今年5月发布的一份报告,到2030年,数据中心的发电量预计将占美国总发电量的8%&am…...
C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器
题目: 题解: struct NestedIterator {int *vals;int size;int cur; };void dfs(struct NestedIterator *iter, struct NestedInteger **nestedList, int nestedListSize) {for (int i 0; i < nestedListSize; i) {if (NestedIntegerIsInteger(neste…...
冷知识:编程第一人是位伟大的女性
冷门智慧:阿达编程先驱的传奇人生揭秘在线播放免费听 - 喜马拉雅手机版欢迎收听由主播壹道徽为您带来的“冷门智慧:阿达编程先驱的传奇人生揭秘”精彩有声内容,该音频时长5分18秒,已被收听1062次,用户嘎嘎呗嘎嘎评价说…...
Python爬虫使用实例
IDE:大部分是在PyCharm上面写的 解释器装的多 → 环境错乱 → error:没有配置,no model 爬虫可以做什么? 下载数据【文本/二进制数据(视频、音频、图片)】、自动化脚本【自动抢票、答题、采数据、评论、点…...
主成分分析(PCA)
1 主成分分析简介 主成分分析(Principal Component Analysis,PCA), 将多个变量通过线性变换以选出较少个数重要变量的一种多元统计分析方法。主成分分析是由卡尔皮尔逊(Karl Pearson)于1901年发明的。通过维度约减的方式将高维度…...
python实现生命游戏
“生命游戏”(Conway’s Game of Life)是由数学家约翰康威提出的一种零玩家游戏。它是一个细胞自动机,由一组简单的规则决定每个细胞的状态。以下是用Python实现“生命游戏”的代码示例: Python代码实现 import numpy as np imp…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
