当前位置: 首页 > news >正文

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中实现鼠标悬停时改变文字颜色的效果。

http://www.lryc.cn/news/425582.html

相关文章:

  • 谷歌账号活动异常,或者申诉回来以后需要手机验证的原因,以及验证手机号的错误操作和正确操作
  • System V IPC奥秘:解锁共享内存、消息队列与信号量的高效通信之路
  • 怎么将pdf转为ppt文件?pdf转ppt的8个方法
  • 【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task03 大咖项目分享 人话八股文Bakwaan_Buddy项目开发尝试
  • 如何在wordpress当中使用插件WP Coder(将html、css、javascript应用到wordpress上)
  • ActiveMQ、RabbitMQ、Kafka、RocketMQ在消息回溯、消息堆积+持久化、消息追踪、消息过滤的区别
  • 使用ITextRenderer导出PDF后无法打开问题,提示‘无法打开此文件‘
  • STL必须掌握的几大常见算法
  • HAproxy 七层负载均衡调度器详解及配置
  • Python学习笔记--私有属性、构造方法、析构方法、常用内置方法
  • 4章8节:用R做数据重塑,行列命名和数据类型转换
  • 浏览器发出请求到响应的过程
  • eNSP 华为划分VLAN
  • 公用事业公司签署大规模电力供应协议
  • C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器
  • 冷知识:编程第一人是位伟大的女性
  • Python爬虫使用实例
  • 主成分分析(PCA)
  • python实现生命游戏
  • 基于vue框架的CIA报价平台的设计与实现1xv02(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 【Kubernetes】k8s集群Pod控制器
  • 什么是NLP实体识别?
  • 掌握Jenkins自动化部署:从代码提交到自动上线的全流程揭秘
  • 糟糕界面集锦-控件篇09
  • 喵喵蓝牙热敏打印机(下)
  • 软件测试第1章 软件测试是什么
  • 【技术分享】 hysteria2从服务端到客户端部署教程
  • C++入门基础知识16
  • 浏览器调试工具-Chrome Dev Tools
  • 基于车联网大数据平台的用户驾驶习惯行为画像分析