关于虚幻使用自定义Widget重载鼠标光标样式后,无法还原到默认鼠标样式的解决方案

虚幻日常开发中,经常会遇到需要修改鼠标样式的需求,有一种方式是通过PlayerController中

SetMouseCursorWidget(EMouse::Type Cursor, UPARAM(Required) class UUseWidget* CursorWidget)

接口,通过传入鼠标类型&自定义的Widget来修改鼠标样式。该接口进一步是调用GameViewPortClient

SetSoftwareCursorWidget(EMouseCursor::Type InCursorType, class UUseWidget* UserWidget)

的接口,该接口中如果传入的Widget为nullptr,就会执行清除操作,但是PlayerContorller中的接口中将Widget又限制为不能为空(看完后我有一点懵),主要是针对GameViewPortClientTMap<EMouseCursor::Type, TSharedPtr<SWidget>> CursorWidgets进行赋值操作,该接口的Widget传参不能为空,就导致无法将GameViewPortClientCursorWidget中对应的已经赋值的鼠标光标类型进行移除操作,(并且GameViewPortClient源码中没有提供接口去重置或移除该CursorWidget)

好,现在的问题是我们在某个功能去重载了某一种鼠标类型的光标样式,退出该功能的时候,我们需要将鼠标光标的样式重置到默认状态。由于项目使用的是蓝图工程,在翻阅了GameViewPortClient源码后,找到了解决方案。

首先,GameViewPortClient的接口是能进行移除操作的,但由于我们是蓝图工程,这个接口调用不了。最后发现,可以通过GameViewPortClient

SetUseSoftwareCursorWidgets(bool bInUseSoftwareWidgets)

来设置是否启用GameViewPortClientCursorWidgets这个变量,解决问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值