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…

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

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

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

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

备战春招——12.05算法

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

Nodejs+vue+ElementUi自动排课系统

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

Java第二十一章 :网络通信

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

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

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

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

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

数据结构之插入排序

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

云原生的 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…

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

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

Selenium+Unittest+HTMLTestRunner框架更改为Selenium+Pytest+Allure(二)

1 代码框架 整体项目结构如图: Common:公共库 Logs: 日志目录 Page: 页面元素 Report:测试报告 TestCase:测试用例 TestData: 测试数据 2 单模块运行 直接上代码: # -*- coding…

详细介绍如何使用 SSD 进行实时物体检测:单次 MultiBox 探测器-含源码

介绍 在实时对象检测中,主流范例传统上采用多步骤方法,包括边界框、像素或特征重采样以及高质量分类器应用的提议。虽然这种方法已经实现了高精度,但其计算需求往往阻碍了其对实时应用的适用性。然而,单次多框检测器 (SSD) 代表了基于深度学习的对象检测的突破性飞跃。SSD…

SpringCloud | Dubbo 微服务实战——注册中心详解

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 |Eureka,Nacos,Consul,Zookeeper在Spring Cloud和Dubbo中实战 引言 在项目开发过程中,随着项目不断扩大,也就是业务的不断增多,我们将采用集群&#xf…

647. Palindromic Substrings 516. Longest Palindromic Subsequence

647. Palindromic Substrings Given a string s, return the number of palindromic substrings 回文子串 in it. A string is a palindrome when it reads the same backward as forward. A substring is a contiguous sequence of characters within the string. nomal: …

LeetCode //C - 221. Maximal Square

221. Maximal Square Given an m x n binary matrix filled with 0’s and 1’s, find the largest square containing only 1’s and return its area. Example 1: Input: matrix [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,…

图解Spark Graphx实现顶点关联邻接顶点的collectNeighbors函数原理

一、场景案例 在一张社区网络里,可能需要查询出各个顶点邻接关联的顶点集合,类似查询某个人关系比较近的都有哪些人的场景。 在用Spark graphx中,通过函数collectNeighbors便可以获取到源顶点邻接顶点的数据。 下面以一个例子来说明&#…

C语言--每日选择题--Day37

第一题 1. 有以下说明语句:则下面引用形式错误的是() struct Student {int num;double score; };struct Student stu[3] {{1001,80}, {1002,75}, {1003,91}} struct Student *p stu; A:p->num B:(p).num C&#…

[论文精读]序列建模使大视觉模型的规模化学习成为可能

本博客是一篇最新论文的精读,论文为UC伯克利大学及约翰霍普金斯大学相关研究者新近(2023.12.1)在arxiv上上传的《Sequential Modeling Enables Scalable Learning for Large Vision Models》 。知名科技新媒体“新智元”给与本文极高评价,并以《计算机视…

STM32(PWM、ADC)

1、PWM 定义 PWM,全称为脉冲宽度调制(Pulse Width Modulation),它通过改变信号的高电平和低电平的持续时间比例来控制输出信号的平均功率或电压。 PWM,全称为脉冲宽度调制(Pulse Width Modulation&#xff…