【Unity笔记】提示框ToolTips大小自适应,及其闪烁的问题
需求:制作了一个提示框,当鼠标移入背包格子内,显示提示框,且提示框位置跟随鼠标移动。当鼠标移出背包格子,隐藏提示框。
制作提示框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大小自适应,及其闪烁的问题的更多相关文章
- Echart遇到的问题:tooltip提示框大小异常
将Echart图表放到项目中,发现当鼠标放到柱状图上时,提示框显示大小超出了div的大小. 官方的文档对于tooltip的说明也没有指出:如何修改大小. 那么tooltip是什么呢? fn+f12打开 ...
- echarts中tooltip提示框位置控制
关键代码: position: function(point, params, dom, rect, size) { //其中point为当前鼠标的位置,size中有两个属性:viewSize和con ...
- Flutter制作Toast会自己关闭的消息提示框
项目中需要用到类似安卓的Toast提示框,因为flutter中又没有相关组件,然后在网上看到个不错的,地址https://www.jianshu.com/p/cf7877c9bdeb,然后拿过来修改了 ...
- [原]发布一个jQuery提示框插件,Github开源附主站,jquery.tooltips.js
一个简单精致的jQuery带箭头提示框插件 插件写好快一年了,和一个 弹出框插件(点击查看) 一起写的,一直没有整理出来,昨天得功夫整理并放到了github上,源码和网站均可在线看或下载. CSS中的 ...
- Unity调用Window提示框Yes/No(英文提示窗)
Unity调用Windows弹提示框 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- Unity调用Windows弹框、提示框(确认与否,中文)
Unity调用Windows弹提示框 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- Unity 中动态修改碰撞框(位置,大小,方向)
在Unity中,玩家处于不同的状态,要求的碰撞框的 位置/大小/方向 会有所改变,怎么动态的修改碰撞框呢? 下面是Capsure Collider(胶囊体)的修改: CapsuleCollider.d ...
- 自适应文案提示框、无数据图片加载<IOS小组件>
非常感谢,帮助我的朋友们,谢谢你们. 该组件的编写仅仅用来不到4个小时,包括测试与修改bug.为他起名为AdaptivePromptDialogBox(就是自适应文案提示框): 呆毛地址:链接 < ...
- 【转】IOS学习笔记29—提示框第三方库之MBProgressHUD
原文网址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单 ...
随机推荐
- [企业化NET]Window Server 2008 R2[1]-服务器基本安装即问题解决记录
1. 服务器基本安装即问题解决记录 √ 2. SVN环境搭建和客户端使用 2.1 服务端 和 客户端 安装 √ 2.2 项目建立与基本使用 √ 2.3 基本冲突解决, ...
- 第一篇:初识ASP.NET控件开发_第三节:“生死有序”的控件生命周期
一.Page本质是一个Control 我们首先要澄清的第一个概念是页面类Page本质是一个控件类,它派生于TemplateControl类,而TemplateControl派生自Control类.既然 ...
- tomcat启动报错 java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
项目运行一直很平稳,但是换了tomcat之后打开jsp网页时就报错,描述如下: 1. 错误描述 打开jsp网页时报错 java.lang.NullPointerException org.ap ...
- 下载必要的android sdk
做android自动化测试,必须要下载anroid sdk 下载后最少安装方法:
- Markdown语法与入门
Markdown语法与入门 Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...
- Mongodb是用Sum 和Where条件
Sum 按照条件求和 db.aa.aggregate([ { $group: { _id: null, total: { $sum: "$value" } } }, //$valu ...
- ElasticSearch + xpack 使用
ElasticSearch 是一个高可用开源全文检索和分析组件.提供存储服务,搜索服务,大数据准实时分析等.一般用于提供一些提供复杂搜索的应.我们为什么要选择 ElasticSearch ?因为它是一 ...
- zabbix 对/etc/ssh/sshd_config文件的监控 但status为unknowen
原因为该文件没有被访问的权限: # ll /etc/ssh/sshd_config -rw------- root root Apr : /etc/ssh/sshd_config 授权后再看: [ro ...
- distinct aggregation
https://docs.google.com/document/d/1zj6OA-K2hi7ah8Fo-xTQB-mVmYfm6LsN2_NHgTCVmJI/edit# https://issues ...
- distill 来自google,openai,deepmind,YC research
https://distill.pub/ https://colah.github.io/