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

Posted 恬静的小魔龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟仿真Unity3D中实现鼠标悬浮模型上显示文字相关的知识,希望对你有一定的参考价值。

推荐阅读

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新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和坑,让后来人可以有些参考。

以上是关于虚拟仿真Unity3D中实现鼠标悬浮模型上显示文字的主要内容,如果未能解决你的问题,请参考以下文章

虚拟仿真Unity3D中实现UI跟随3D模型旋转移动UI一直面朝屏幕

虚拟仿真Unity3D中实现鼠标的单击双击拖动的不同状态判断

虚拟仿真Unity3D中实现InputField组件表格Tab或者Enter换行实现

虚拟仿真Unity3D中模型的渐隐渐现效果实现

虚拟仿真Unity3D中模型的渐隐渐现效果实现

Unity3d游戏中实现阿拉伯语文字正常显示