【虚拟仿真】Unity3D中实现鼠标悬浮模型上显示文字

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

推荐阅读

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

在仿真项目开发中,会遇到让鼠标悬浮模型后显示模型的名字的需求。

比如说这样:

在这里插入图片描述
那么就来实现一下吧。

二、正文

2-1、搭建场景

在这里插入图片描述
两个Cube,一个Plane,简简单单。

摄像机的角度随便调整一下。

2-2、搭建UI

在这里插入图片描述
一个Image,下面节点挂一个Text,简简单单。

在这里插入图片描述
设置屏幕分辨率,没啥问题。

2-3、编写代码

新建脚本UIHoverTest.cs,双击打开脚本,修改代码:

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class UIHoverTest : MonoBehaviour{
    //偏移值
    [SerializeField] float offsetX = 0;
    [SerializeField] float offsety = 0;
    //显示名字
    public string showName = "";
    //显示文字UI
    public GameObject showNameTip;

    /// <summary>
    /// 控制UI的位置
    /// </summary>
    void Update()
    {
        if (showNameTip.activeSelf)
        {
            showNameTip.transform.position = Input.mousePosition + new Vector3(offsetX, offsety, 0);
        }
    }

    /// <summary>
    /// 鼠标进入到模型  这个脚本需要挂载在模型上 否则检测不到
    /// </summary>
    public void OnMouseEnter()
    {
        if (showName != "" && !EventSystem.current.IsPointerOverGameObject())
        {
            ShowNameTip(showName);
        }
    }

    /// <summary>
    /// 鼠标离开模型
    /// </summary>
    public void OnMouseExit()
    {
        HideNameTip();
    }

    /// <summary>
    /// 显示文字
    /// </summary>
    /// <param name="name"></param>
    public void ShowNameTip(string name)
    {
        showNameTip.SetActive(true);
        showNameTip.GetComponentInChildren<Text>().text = name;
    }

    /// <summary>
    /// 隐藏文字
    /// </summary>
    public void HideNameTip()
    {
        showNameTip.SetActive(false);
        showNameTip.GetComponentInChildren<Text>().text = "";
    }}

将这个脚本挂载在需要交互的模型上,比如两个Cube:
在这里插入图片描述
一个叫立方体1号,一个叫立方体2号。

运行程序:

在这里插入图片描述

三、后记

本篇博客完成了虚拟仿真项目常用到的鼠标进入模型显示文字的功能。

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

比如可以用预制体生成现实的UI,这样就不用再将UI拖到每一个模型的脚本组件的卡槽中了。

还有就是分辨率的不同造成的偏移值的问题,也可以优化一下。


你的点赞就是对博主的支持,有问题记得留言:

博主主页有联系方式。

博主还有跟多宝藏文章等待你的发掘哦:

专栏方向简介
Unity3D开发小游戏小游戏开发教程分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。
Unity3D从入门到进阶入门从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。
Unity3D之UGUIUGUIUnity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。
Unity3D之读取数据文件读取使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。
Unity3D之数据集合数据集合数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。
Unity3D之VR/AR(虚拟仿真)开发虚拟仿真总结博主工作常见的虚拟仿真需求进行案例讲解。
Unity3D之插件插件主要分享在Unity开发中用到的一些插件使用方法,插件介绍等
Unity3D之日常开发日常记录主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等
Unity3D之日常BUG日常记录记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6