推荐阅读
- CSDN主页
- GitHub开源地址
- 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之UGUI | UGUI | Unity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。 |
Unity3D之读取数据 | 文件读取 | 使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。 |
Unity3D之数据集合 | 数据集合 | 数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。 |
Unity3D之VR/AR(虚拟仿真)开发 | 虚拟仿真 | 总结博主工作常见的虚拟仿真需求进行案例讲解。 |
Unity3D之插件 | 插件 | 主要分享在Unity开发中用到的一些插件使用方法,插件介绍等 |
Unity3D之日常开发 | 日常记录 | 主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等 |
Unity3D之日常BUG | 日常记录 | 记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。 |