UE制作鼠标悬停位置显示详情面板

根据这篇大佬文章学习, 勿忘心安:UE4 获取UMG Widget的坐标位置 ,总结细致化做个笔迹。

还是老生常谈,很多人标题写怎么做xx功能,然后进去一看,贴两句代码截图分析完事,前因后果什么都没有,白白浪费时间.建议这类人不要写文章,浪费自己时间也浪费他人学习的时间,还加一些莫名其妙的逻辑语气助词。

首先需要c++自定义一个方法

Widget即你鼠标悬停的那个控件,然后获取位置,经过坐标轴转换,获得绝对位置坐标,再加上悬停控件的长宽的一半,即控件中心显示物品详情。具体计算方式参考来源说明。

Parentwidget,就是悬停控件的总父类UI,,悬停控件生成时需要初始化parentwidget获取对应信息。

建立鼠标悬停的控件,和详情面板的控件

鼠标悬停的控件

详情面板,一定要加上CanvasPanel, 然后需要用到子控件,这是之前我研究半天没研究出来的主要原因,因为自适应关系,我学习的时候很少加入CanvasPanel,需要自定义位置的时候此为必须

总父类控件也是如此,必须加上CanvasPanel根部

悬停控件位置任意,也不需要注意什么,代码或者蓝图初始化的时候,给悬停的控件赋值根即可

开始做显示逻辑

详情面板:

建立方法函数设置位置和Aligment(即该面板的对准信息,控制该详情出现在鼠标的左上还是左下右下这些具体位置)


悬停控件:

初始化父类

覆写鼠标进入和离开事件(蓝图可实现,因为需要更新数据,数据类会存在结构体,有时候是结构体指针,避免混乱,有时候用指针有时候用引用的,我就写在c++内)

鼠标悬停离开放在总父类的任意位置的ui控件,鼠标悬停上去都会出现在对应位置其效果。

编辑于 2023-02-26 22:44 ・IP 属地广东