需求:制作了一个提示框,当鼠标移入背包格子内,显示提示框,且提示框位置跟随鼠标移动。当鼠标移出背包格子,隐藏提示框。

制作提示框ToolTips

因为提示框的大小要求随着显示的文本内容长度而自动大小适应,所以用一个Text控件显示提示框的文本内容,并挂上Content Size Fitter组件。

因为提示框不仅只是一个Text文本,还需要有一个Image做背景,同时该Image的大小也能跟随文本内容长度自适应,所以最佳办法是:

如上图,一个Text作为父物体,下面是一个Image和Text作为子物体。

如上图,父物体Text挂上Content Size Fitter组件,同时控制其子物体Image和Text的大小。然后用自定义脚本控制父物体Text和子物体Text显示的文本内容一致即可。

如果不做子物体Text,会因为Image在父物体Text之后渲染,导致Image遮挡父物体Text。此时就算把Image设置透明度,父物体Text的文字颜色也表现的不够理想。


提示框ToolTips的闪烁问题

问题:

当鼠标移入背包格子内,显示提示框,且提示框位置跟随鼠标移动。当鼠标移出背包格子,隐藏提示框。为此要在父物体Text身上挂上一个自定义脚本来控制父物体Text的显隐。运行时会发现当鼠标移入背包格子后,提示框不断闪烁。

原因:

鼠标移入背包格子后,脚本控制提示框显示。但提示框出现后鼠标所处位置正是提示框Pivot(0.5,0.5)的位置,即鼠标位于提示框的中心点。提示框出现在背包格子之上且本身也能接收鼠标射线,导致脚本触发鼠标离开了背包格子事件,要隐藏提示框。提示框隐藏后鼠标射线又重新检测到位于背包格子之内,脚本控制提示框显示,不断重复以上过程导致了提示框闪烁的问题。

解决办法:

把提示框的中心点Pivot定于外部,即提示框出现时鼠标不在提示框内部即可(已在脚本中控制提示框当鼠标位于背包格子内部时跟随鼠标移动,所以鼠标永远不会进入到提示框内部)。

如果通过这种方式,如果发现文字内容很多和很少的时候中心点Pivot到文本框的距离不固定(按等比例缩放的),那么可以把这个中心点Pivot挪到左上角(0,1)位置(没有移出到外部),然后给一个固定的Vector2偏移量即可。


参考资料:

【Unity笔记】提示框ToolTips大小自适应,及其闪烁的问题的更多相关文章

  1. Echart遇到的问题:tooltip提示框大小异常

    将Echart图表放到项目中,发现当鼠标放到柱状图上时,提示框显示大小超出了div的大小. 官方的文档对于tooltip的说明也没有指出:如何修改大小. 那么tooltip是什么呢? fn+f12打开 ...

  2. echarts中tooltip提示框位置控制

    关键代码: position: function(point, params, dom, rect, size) { //其中point为当前鼠标的位置,size中有两个属性:viewSize和con ...

  3. Flutter制作Toast会自己关闭的消息提示框

    项目中需要用到类似安卓的Toast提示框,因为flutter中又没有相关组件,然后在网上看到个不错的,地址https://www.jianshu.com/p/cf7877c9bdeb,然后拿过来修改了 ...

  4. [原]发布一个jQuery提示框插件,Github开源附主站,jquery.tooltips.js

    一个简单精致的jQuery带箭头提示框插件 插件写好快一年了,和一个 弹出框插件(点击查看) 一起写的,一直没有整理出来,昨天得功夫整理并放到了github上,源码和网站均可在线看或下载. CSS中的 ...

  5. Unity调用Window提示框Yes/No(英文提示窗)

    Unity调用Windows弹提示框 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  6. Unity调用Windows弹框、提示框(确认与否,中文)

    Unity调用Windows弹提示框 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  7. Unity 中动态修改碰撞框(位置,大小,方向)

    在Unity中,玩家处于不同的状态,要求的碰撞框的 位置/大小/方向 会有所改变,怎么动态的修改碰撞框呢? 下面是Capsure Collider(胶囊体)的修改: CapsuleCollider.d ...

  8. 自适应文案提示框、无数据图片加载<IOS小组件>

    非常感谢,帮助我的朋友们,谢谢你们. 该组件的编写仅仅用来不到4个小时,包括测试与修改bug.为他起名为AdaptivePromptDialogBox(就是自适应文案提示框): 呆毛地址:链接 < ...

  9. 【转】IOS学习笔记29—提示框第三方库之MBProgressHUD

    原文网址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单 ...

随机推荐

  1. Android如何实现点击一次返回键返回桌面而不是退出应用

    具体代码如下所示: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent. ...

  2. Android Framework中的线程Thread及它的threadLoop方法

    当初跟踪Camera的代码中的时候一直追到了HAL层,而在Framework中的代码看见了许很多多的Thread.它们普遍的特点就是有一个threadLoop方法.依照字面的意思应该是这个线程能够循环 ...

  3. 你的应用是怎样被替换的,App劫持病毒剖析

    一.App劫持病毒介绍 App劫持是指运行流程被重定向,又可分为Activity劫持.安装劫持.流量劫持.函数运行劫持等. 本文将对最近利用Acticity劫持和安装劫持的病毒进行分析. 二.Acti ...

  4. 带你开发一款给Apk中自己主动注入代码工具icodetools(开凿篇)

    一.前言 从这篇開始咋们開始一个全新的静态方式逆向工具icodetools的实现过程.这个也是我自己第一次写的个人认为比較实用的小工具,特别是在静态方式逆向apk找关键点的时候.兴许会分为三篇来具体介 ...

  5. Debian静态IP地址和DNS

    Debian静态IP地址和DNS 一.配置文件及路径 /etc/network/interfaces 二.IP地址1. DHCP的IP配置如下 # The primary network interf ...

  6. 【转】Java利用反射机制访问私有化构造器

    Java利用反射机制访问私有化构造器 博客分类: java   我们都知道,当一个类的构造方法被设为私有的时候(private),在其他类中是无法用new来实例化一个对象的. 但是有一种方法可以把带有 ...

  7. Atitti cto的日常流程与职责attilax总结

    Atitti cto的日常流程与职责attilax总结 1. (最重要)技术战略制定 规划,预测趋势1 1.1. 关键词 Throught技术雷达 趋势 没落  已死  辉煌 未来1 1.2. (比较 ...

  8. 【Unity】6.6 Random类

    分类:Unity.C#.VS2015 创建日期:2016-04-20 一.简介 Unity引擎提供的Random类可以用来生成随机数.随机点或旋转角度. 1.成员变量 seed:设置用于随机数生成器的 ...

  9. SqlServer四种排序:ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()

    首先,我们创建一些测试数据. if OBJECT_ID('Tempdb.dbo.#Tmp') is not null drop table #Tmp create table #Tmp ( name ...

  10. zabbix 对网卡的流量的监控

    新建Template:Network incoming or outcoming on eth1 新建items:Network incoming on eth1 特别注意:储存值:差量(每秒速率)- ...