之前做过一个选择物体的功能,
使用的是射线检测方法,
大概原理是射线返回物体的信息,改变该物体的层,
是使用的一个Outline System插件,这个插件就是把设定层里面的物体的轮廓,显示成指定颜色,这次的功能同样需要使用这个插件.下面是这个插件的脚本属性

可以看到Ourline的层默认为最大层也就是31层,而物体默认的层是0层.同时将摄像机绑定到Main Camera位置.

这次使用的方法是在一个脚本里实现IPointerEnterHandler和IPointerExitHandler两个接口,是用来判断鼠标在UI元素上移入和移出的方法,但在对应的摄像机上添加Physics Raycaster组件就可以使用在3D物体上了.
具体实现:
1,创建一个cube作为观察对象,确保在摄像机的视野中
2,在cube上创建脚本,任意命名

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;public class checkBooks : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler
{public void OnPointerEnter(PointerEventData eventData){        SelectWidthHighlightControl(transform.gameObject);isShowInfo = true;Info = transform.name;}public void OnPointerExit(PointerEventData eventData){SafeClear();isShowInfo = false;}#region 边框线Transform SelectObject;public void SelectWidthHighlightControl(GameObject go){SafeClear();SelectObject = go.transform;Transform[] allTransform = SelectObject.transform.GetComponentsInChildren<Transform>();if (allTransform != null){for (int i = 0; i < allTransform.Length; i++){SetHighLight(allTransform[i].gameObject);}}}/// <summary>/// 清除选择设备/// </summary>public void SafeClear(){if (SelectObject != null){Transform[] allTransform = SelectObject.transform.GetComponentsInChildren<Transform>();if (allTransform != null){for (int i = 0; i < allTransform.Length; i++){SetUnHighLight(allTransform[i].gameObject);}}SelectObject = null;}}/// <summary>/// 设置物体高亮  供全局调用/// </summary>public void SetHighLight(GameObject go){go.layer = 31;}//取消设置物体高亮  供全局调用public void SetUnHighLight(GameObject go){go.layer = 0;}#endregion#region 物体名bool isShowInfo;//信息样式public GUIStyle _GUIStyle;//偏移距离float Offset = 15;//物体名称string Info = "名字";void OnGUI(){_GUIStyle.normal.textColor = Color.red;_GUIStyle.fontSize = 24;//标签 位置大小,信息,样式  if(isShowInfo)GUI.Label(new Rect(Input.mousePosition.x + Offset, Screen.height - Input.mousePosition.y, 100, 100), Info, _GUIStyle);}#endregion
}

创建UI RawImage,如下图
从插件的预制体里复制组件拷贝到Canvas画布里
然后设置组件参数

画框的位置是选择层新建一个31层就行,然后选择你新建的层,最好是31层,要不然就该代码.

最后,在main camera里面添加组件Physics Raycaster,参数不用调整,
测试一下,当鼠标移入cube时显示高亮和名称,移出时消失,成功

总结一下
使用射线方法时,优点是挂一个脚本在摄像机上,其余想要高亮显示的物体统一添加一个标签就行,缺点是写起来较乱,方法调用麻烦.
使用IPointerEnterHandler和IPointerExitHandler方法缺点是需要在每个要高亮的物体上挂载一个,优点是方便管理,无需其他调用,代码清晰.
最后,感谢我杰哥!!!
这个是他的ID:
JayW就是我

Unity3D 鼠标选择物体高光显示信息相关推荐

  1. [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果

    大家好,我是秦元培.我参加了CSDN2014博客之星的评选,欢迎大家为我投票,同时希望在新的一年里大家能继续支持我的博客! 大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn. ...

  2. unity3D 鼠标控制物体旋转带阻尼效果

    最近做了一个鼠标拖拽360°旋转查看物体的功能,很基础的一个功能,代码不多写的很快 但是最后出来的效果不是很满意,感觉没有灵魂,很死板僵硬,所以做了一点小修改,在鼠标拖拽结束时计算最后鼠标的加速度,让 ...

  3. 高德地图鼠标经过点标记显示信息窗体

    创建点标记: 实例化信息窗体 放入鼠标移入/移出事件 源码: // 获取站点 getData() {api.stationMap(this.params).then((res) => {cons ...

  4. unity3d鼠标控制物体 移动 旋转 缩放

    需求:制作一个鼠标中键移动缩放和鼠标右键旋转的功能(鼠标右键旋转可以自行改成鼠标左键旋转) 效果图: 1.新建一个名为Target的立方体cube 2.新建一个材质球 Yellow颜色的并挂载到Tar ...

  5. echarts formatter鼠标悬停显示信息

    由于echarts中柱状图,鼠标放上去默认显示的是x轴名称以及y轴值. 而我现在需要再添加一些显示信息. 下面是操作: 在tooltip对象中补充trigger: "axis",属 ...

  6. unity3d中让物体显示和隐藏

    unity3d中让物体显示和隐藏的方法 gameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 仅仅是想当于隐身 而物体本身的碰撞体还 ...

  7. 【前端图表】echarts散点图鼠标划过散点显示信息

    在做项目的过程中,总会遇到这样或者那样的bug,这个时候就要看自己的动手能力有多强了,着手解决了一个bug之后,整个人都感觉很开心,端午下班之前遇到了一个小问题,echarts散点图鼠标划过散点的时候 ...

  8. NGUI与Unity3d物体交叉显示的一种解决方案

    在项目的开发过程中,很多做过UI的同学估计都会遇到NGUI与unity3d物体的交叉显示问题,不知道如何处理,或者各种各样的界面穿插问题,界面层级混乱,对于界面来说,这些应该算是一个很严重的问题.在之 ...

  9. 使用VUE实现在table中文字信息超过5个隐藏,鼠标移到时弹窗显示全部

    使用VUE实现在table中文字信息超过5个隐藏,鼠标移到时弹窗显示全部 <template> <div> <table> <tr v-for="i ...

最新文章

  1. 粤桂粤黔谋定现代农业产业园 林裕豪:从玉农业一县一园签约
  2. Python 列表元组字典集合
  3. python把矩阵堆叠成大矩阵_python numpy 矩阵堆叠实例
  4. InnoDB文档笔记(三)—— Undo Log
  5. c++多边形扫描线填充算法_基于3DGIS技术的梯形格网构建及其简化算法设计
  6. html如何在网页上看错误,HTML错误时,Spring MVC的,但不能查看网页时,静态
  7. 高校舆情分析python_微博的高校舆情监控系统设计
  8. 微信获取unionid
  9. python去重drop_duplicates后一定要reset_index()
  10. 让你搞懂 administrator最高权限
  11. 用C语言学习高中数学:补集
  12. linux调整tmp目录,linux – 如何将默认/ tmp更改为/ home / user / tmp
  13. 手机短信直接跳转到微信关注公众号或者添加好友的方案
  14. JAVA 之POI导入批量新增、批量检查、日志记录、失败原因、失败条数、数据库映射
  15. C语言去除图像的离散区域,Visual C++数字图像实用工程案例精选
  16. sqlmap之sql注入(二)
  17. 【二】gym初次入门一学就会---代码详细解析简明教程----平衡杆案例
  18. 关于StringUtils的各种方法的功能、解析
  19. WIFI信号放大增强器(中继器)中继成功后怎么改名字
  20. 百度鹰眼控制台整合javaweb

热门文章

  1. 转:移动互联:没有新故事没有新大佬
  2. 如何使用启动盘PE桌面工具安装原版win7系统?
  3. 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功
  4. 基于Matlab的压力控制论文,基于Matlab的压力容器螺栓组联接优化设计的论文
  5. css 细线表格,如何在Dreamweaver中制作细线表格?
  6. HDU 613 Kolakoski
  7. 51单片机教程:二相四线步进电机驱动
  8. 唯品会web前端实习生一面二面经
  9. android 手机内存其他文件在哪里,消失的手机内存去哪了?用它清理手机文件,告诉你手机内存的秘密...
  10. 当页面放大后, 背景会消失