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

制作提示框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. 关于less在DW中高亮显示问题

    首先, 找到DW 安装目录. Adobe Dreamweaver CS5.5\configuration\DocumentTypes 中的,MMDocumentTypes.xml 这个文件,然后用记事 ...

  2. 谁说C语言很简单?

    前两天,Neo写了一篇<语言的歧义>其使用C语言讨论了一些语言的歧义.大家应该也顺便了解了一下C语言中的很多不可思异的东西,可能也是你从未注意到的东西. 是的,C语言并不简单,让我们来看看 ...

  3. ES6--变量的声明及解构赋值

    ​ ES6的目标是使得JavaScript语言能够用来编写大型的复杂的应用程序.成为企业级开发语言:该标准已于2015年6月17日正式公布. 可是真正的普及我觉得还得须要一段时间.然而这并非理由让我们 ...

  4. Excel列添加单引号

    ="'"&A2&"',"   对A2列同步添加单引号

  5. 常用代码之三:jQuery为按钮绑定事件的代码

    如题,比如有一个按钮:<input type='button' class='btn-text' id ='addHtml' value='新增' /> 为它添加onclick事件的代码: ...

  6. js判断客户端是否是IOS系统

    在手机端应用的开发中,经常会碰到IOS系统跟Android系统去访问同一个内容时的展示效果不同,这时候我们需要区别对待,下面代码就是用js判断手机终端是否IOS系统: //判断是否为ios系统:是IO ...

  7. 尼康G镜头与D镜头的差别

    尼康系统实现自动对焦必须:机身和镜头,两者至少其一拥有马达. 尼康现在新出的G头,几乎都带马达.但在胶片时代的G头,几乎都不带马达. G只表示:没有手动光圈环. D只表示:镜头能提供距离信息给机身. ...

  8. unity, dll is not allowed to be included or could not be found

    player settings change to Net 2.0 ref: http://answers.unity3d.com/questions/485085/dll-is-not-allowe ...

  9. jumpserver 3.2修改排序规则

    在默认的情况下,我们使用jumpserver的时候 这里我使用xshell 客户端连接到堡垒机的时候, 这里我的显示规则是根据IP排序的,但是我这里的服务器的hostname 都是根据场景设置的hos ...

  10. sqlite第三方类库:FMDB使用

    转自:http://www.cnblogs.com/wuhenke/archive/2012/02/07/2341656.html 本文转自一位台湾ios开发者的blog,由于blog地址被墙掉,转发 ...