Unity3D实现鼠标悬浮UI或物体上显示文字信息

系列文章目录

Unity工具


文章目录

  • 系列文章目录
  • 前言
  • 最终效果
  • 一、UI事件显示文字
    • 1-1 ui事件需要引用命名空间using UnityEngine.EventSystems;
    • 1-2 IPointerEnterHandler 接口
    • 1-3 IPointerExitHandler 接口
    • 1-4 IPointerMoveHandler 接口
  • 二、场景搭建
    • 2-1 实现如下
  • 三、代码实现
    • 3-1 挂到Image上面的脚本
    • 3-2 挂到Cavas上的脚本
    • 3-3 UIController 实现
  • 四、物体鼠标显示文字
    • 4-1 OnMouseEnter
    • 4-2 OnMouseExit
    • 4-3 OnMouseOver
  • 五、代码实现
    • 5-1 代码挂到Cube上即可
  • 六、实现完成
  • 总结


大家好,我是&心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

前言

本篇文章实现一个鼠标悬浮在ui或者物体上显示文字的功能


最终效果

unity鼠标悬浮ui显示文字

一、UI事件显示文字

1-1 ui事件需要引用命名空间using UnityEngine.EventSystems;

1-2 IPointerEnterHandler 接口

鼠标进入UI执行的

1-3 IPointerExitHandler 接口

鼠标离开UI执行的

1-4 IPointerMoveHandler 接口

鼠标在ui里滑动执行的

二、场景搭建

2-1 实现如下

1.在这里插入图片描述
2.在这里插入图片描述
搭建比较简单,各位顺便搭建吧。

三、代码实现

3-1 挂到Image上面的脚本

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;public class UIInputText : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerMoveHandler
{public void OnPointerEnter(PointerEventData eventData){UIController.instance_.uitextobj.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y + 25, 0);UIController.instance_.uitextobj.gameObject.SetActive(true);UIController.instance_.text.text = this.name;}//鼠标离开public void OnPointerExit(PointerEventData eventData){UIController.instance_.uitextobj.gameObject.SetActive(false);}//鼠标在ui里滑动public void OnPointerMove(PointerEventData eventData){UIController.instance_.uitextobj.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y + 25, 0);UIController.instance_.uitextobj.gameObject.SetActive(true);UIController.instance_.text.text = this.name;}// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}
}

3-2 挂到Cavas上的脚本

在这里插入图片描述

3-3 UIController 实现

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIController : MonoBehaviour
{public static UIController instance_;public Transform uitextobj;public Text text;private void Awake(){instance_ = this;}
}

四、物体鼠标显示文字

也是同样的三个方法切记物体要有碰撞体

4-1 OnMouseEnter

鼠标进入碰撞盒执行

4-2 OnMouseExit

鼠标离开碰撞盒

4-3 OnMouseOver

鼠标在碰撞盒里每帧都调用

五、代码实现

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class OBJInputText : MonoBehaviour
{private void OnMouseEnter(){UIController.instance_.uitextobj.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y + 25, 0);UIController.instance_.uitextobj.gameObject.SetActive(true);UIController.instance_.text.text = this.name;}private void OnMouseExit(){UIController.instance_.uitextobj.gameObject.SetActive(false);}private void OnMouseOver(){UIController.instance_.uitextobj.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y + 25, 0);UIController.instance_.uitextobj.gameObject.SetActive(true);UIController.instance_.text.text = this.name;}
}

5-1 代码挂到Cube上即可

在这里插入图片描述

六、实现完成

代码比较简单,可以拓展的地方很多,还可以使用更美观的UI。


总结

你的点赞就是对博主的支持,有问题记得留言
不定时更新Unity开发技巧,觉得有用记得一键三连哦。

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

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

相关文章

Windows11亮度调节滑块消失不见,如何解决

电脑亮度调节滑块消失,键盘F6,F7亮度调节失效,系统-屏幕-亮度和颜色-亮度调节消失不见 1.首先winR ,输入regedit打开注册表编辑器 2.在注册表编辑器中依次点击(红橙黄绿青蓝紫) “计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Cl…

Linux edquota命令教程:如何管理用户和组的磁盘配额(附案例详解和注意事项)

Linux edquota命令介绍 edquota命令在Linux中用于编辑用户或组的配额。配额用于限制用户或组可以消耗的文件系统空间。edquota命令打开一个文本编辑器,通常是vi,允许用户编辑指定用户或组的配额信息。 Linux edquota命令适用的Linux版本 edquota命令在…

政府信息化与电子政务

前言:各个地方的省级政务服务平台是最具代表性的政务服务领域。 1、数字政府和政府服务的概念区别 数字政府 数字政府是指以新一代信息技术为支撑,重塑政务信息化管理架构、业务架构、技术架构,通过构建大数据驱动的政务新机制、新平台、新渠…

班级查分软件制作教程:老师必备技能!

首先,你需要选择一个合适的软件平台来制作班级查分软件。推荐使用群发成绩,因为它是一个功能强大且易于使用的在线查询系统,可以帮助你快速高效地制作班级查分软件​。 在制作班级查分软件之前,你需要准备好学生的成绩数据。这可以…

如何选择Docker基础镜像

镜像官网 操作系统基础镜像 busybox Alpine CentOS Ubuntu Debian 编程语言基础镜像 Java基础镜像 Python基础镜像 NodeJs基础镜像 应用基础镜像 Nginx基础镜像 Tomcat基础镜像 Jetty基础镜像 其它基础镜像例子 Maven基础镜像 Jenkins基础镜像 GitLab基础镜像 如何选择Docker基…

量化学习笔记——入门与基本概念

基本概念 量化投资 投资的核心是大数定律。 量化投资就是以数据为基础,以策略模型为核心,以程序化交易为手段,以 追求绝对收益为目标 的投资方法。 用数学表示金融市场,其数学定义: Y F ( x 1 , x 2 , . . . . .…

Java 连接Sqlite数据库

POM文件添加依赖 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.36.0.3</version></dependency> application.yml spring:datasource:#url: jdbc:sqlite::resource:db/main.db…

python 0 or 1为什么返回1,or运算原理

0 or 1的python表达式为什么返回1 首先&#xff0c;应该先搞清楚or的用法&#xff0c;在逻辑or的比较运算中&#xff0c;比如m or n中&#xff0c;Python会先对m进行bool布尔运算bool(m)&#xff0c;如果返回True&#xff0c;则m or n的返回值为m&#xff0c;如果返回False&am…

备战春招——12.05算法

树、二叉树 本次主要是对树、二叉树的前中后和递归与非递归遍历以及通过这种结构完成一些操作实现。 二叉树 中序遍历 中序遍历就是中间打印出结果嘛,如下列递归实现的&#xff0c;中间取结果. /** 递归实现* Definition for a binary tree node.* struct TreeNode {* …

Nodejs+vue+ElementUi自动排课系统

使用自动排课系统分为管理员和学生、教师三个角色的权限子模块。 管理员所能使用的功能主要有&#xff1a;首页、个人中心、学生管理、教师管理、班级信息管理、专业信息管理、教室信息管理、课程信息管理、排课信息管理、系统管理等。 学生可以实现首页、个人中心、排课信息管…

Java集合框架之争:ArrayList vs LinkedList

友情提示&#xff1a;LinkedList其实就是数据结构中的双向链表&#xff0c;没学过的话可以学一下有关链表的知识&#xff0c;至于LinkedList中的源码其实大多数据结构的基本链表操作实现的&#xff0c;这里我就不多做说明了&#xff0c;有兴趣的话可自行看源码 由于ArrayList由…

Java第二十一章 :网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封装成不同的类&#xff0c;用户只要创建这些类的对象&#xff0c;使用相应的方法&#xff0c;即使不具备有关的网络支持&#xff0c;也可以编写出高质量的网络通信程…

【模型可解释性系列一】树模型-拿到特征重要度-打印关键因素

接下来一段时间内&#xff0c;会主要介绍下模型可解释性方向的一些常用方法。 模型可解释性&#xff1a;主要用来解释为什么这个样本的特征是这样的时候&#xff0c;模型结果是那样。面向老板汇报工作(尤其是不懂算法的老板)和业务方。 常用的树模型 xgboost、lightgbm这两个…

Android studio:打开应用程序闪退的问题2.0

目录 找到问题分析问题解决办法 找到问题 老生常谈&#xff0c;可能这东西真的很常见吧&#xff0c;在之前那篇文章中 linkhttp://t.csdnimg.cn/UJQNb 已经谈到了关于打开Androidstuidio开发的软件后明明没有报错却无法运行&#xff08;具体表现为应用程序闪退的问题&#xff…

4-Docker命令之docker exec

1.docker exec介绍 docker exec命令是用来在运行中的容器运行命令 2.docker exec用法 docker exec [参数] [root@centos79 ~]# docker exec --helpUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]Execute a command in a running containerAliases:docker conta…

数据结构之插入排序

目录 前言 插入排序 直接插入排序 插入排序的时间复杂度 希尔排序 前言 在日常生活中&#xff0c;我们不经意间会遇到很多排序的场景&#xff0c;比如在某宝&#xff0c;某东上买东西&#xff0c;我们可以自己自定义价格是由高到低还是由低到高&#xff0c;再比如在王者某…

云原生的 CI/CD 框架tekton - pipeline(一)

文章目录 1. 官方介绍2. 组件2.1 Tekton Pipelines2.2 部署pipeline2.3 部署dashborad2.3.1 task2.3.2 taskrun2.3.3 Pipeline2.3.4 PipelineRun 3. 案例案例1: 拉取代码并查看readmestep1: 创建task - 拉取代码step2: 创建task - 查看reamdestep3: 创建task的编排 - pipelines…

Flink入门之DataStream API及kafka消费者

DataStream API 主要流程&#xff1a; 获取执行环境读取数据源转换操作输出数据Execute触发执行 获取执行环境 根据实际情况获取StreamExceptionEnvironment.getExecutionEnvironment(conf)创建本地环境StreamExecutionEnvironment.createLocalEnvironment()创建远程环境creat…

vue-template-compiler 的原理

什么是 Vue 模板&#xff1f; Vue 模板是一种用 HTML 语法来描述 Vue 组件的视图的方式&#xff0c; 例如&#xff1a; <template><div class"example">{{ msg }}</div> </template> <script>export default {data() {return {msg: &…

软件测试面试题解析--什么题是必问的?

设计测试用例的主要方法有哪些&#xff1f;简述一下缺陷的生命周期&#xff1f;测试流程&#xff1f;项目流程&#xff1f;验收测试中和β测试区别&#xff1f;如何维护测试用例&#xff1f;每天测多少用例怎么分配的测试的一天能找多少bug你在上一家公司&#xff0c;写没写过测…