通用组件
Common_ToolTip
ButtonWithParamClickEvent按钮
需求说明
在手机游戏上,有几类ToolTip的需求,
当按住某个按钮的时候,会弹出一个tip,手指抬起时,这个tip就消失,如下图
当点击一个按钮时,弹出一个下拉框,手抬起时,这个下拉框仍然存在,如下图
当然,unreal默认提供了一种ToolTip,即,在PC平台上,鼠标滑过控件时,显示tooltip,滑出后消失。在手机平台上待测试(todo)。在属性面板的TooltipWidget中设置
优点
通过MenuAnchor实现,可自动实现屏幕边缘检测,当处于边缘状态时,自动调整位置;当失去焦点时,会自动关闭。
高复用性。控件只是一个容器, tip的布局、样式,由自己定义。
利用ButtonWithParamClickEvent成功解决误操作问题。误操作描述:我们有一列按钮,每个按钮点击时都会弹出tooltip,当我们在btn1按下鼠标(or手指)并滑动到btn2抬起时,会在btn2上弹出tooltip。具体使用方法见后文。
切记,不可在按下时就弹出tooltip,因为如果btn在一个scrollBox下时,滑动功能和弹tooltip功能会冲突。
使用方便。
开tooltip:OpenMenuByContentAndPos(UUserWidget* Content, Vector2D Pos)
关tooltip:CloseToolTip()
需求2使用方法
为了避免误操作,使用ButtonWithParamClickEvent为响应输入源。误操作描述参见优点>3.
ButtonWithParamClickEvent其实就是一个按钮,只不过它的OnClick事件会抛出PointerEvent参数,这个参数可以让我们找到鼠标按下的坐标。并且,设置ClickMethod和TouchMethod设置为Precise**。
响应OnClick事件。
神奇的MouseEvent
创建自己的tooltip widget。我在组队界面中用到的tooltip如下。
(TeamMatch_ToolTip)
调用显示ToolTip。通过GameInstance呼出tooltip
关闭tooltip。当失去焦点后,会自动关闭tooltip。但是,如果tip里有按钮的话,点击按钮后,不会让tip消失(因为没失去焦点)。所以,我们会手动关闭。
(手动关闭)
需求1使用方法
使用border来作为tooltip的响应输入源。
在OnMouseButtonDown时,弹出tooltip
在OnMouseButtonUp时,关闭tooltip
切记,当非正常滑控件时,也要关闭tooltip。此时,响应OnMouseLeave即可。
实现细节(TODO)