简述需求:在游戏场景中,碰到可交互物品,显示不同的Widget(提示不同的文字提示),碰到物品时显示,远离有效距离关闭显示,并按某一个按键触发该item交互,默认F
常规解决方案:一
ItemType(枚举类型): NoBreak CouldBreaked Picked 不可击碎 可击碎 可拾取
通用显示UI:根据不同的枚举
class ABaseItem :Actor类,为场景中可交互的物品类,数据成员 :物品类型 ItemType /模型 staticmesh /控件UserWidget/ 碰撞盒
触发方式:
Class ABaseItem 中
BeginOverLap /EndOverLap Cast to PlayerControl(overlapActor) 类 判断当前靠近是否为PlayerControl ->ShowWidgetbyType
EndOverLap 逻辑相反:EndOverLap时,HIdeWidget
按F根据当前靠近的物品显示对应控件
PlayerControl类中保存当前靠近物品Actor类指针 ,由于每次只能操作一个物品 ,保存一个指针即可,上述BeginOverlap同时向Control类中传递当前Actor类指针
Beginoverlap - playercontrol ->Baseitem_ptr Save 保存指针
EndoverLap Playercontrol 中 将BaseItem指针置空
PlayerControl 中BindEvent 绑定F键方法
void Press if(Baseitem_ptr ) Baseitem_ptr ->playerSelectFunc()调用选中方法
标签:待续,PlayerControl,通用化,EndOverLap,物品,Ue4,交互,ptr,指针 From: https://www.cnblogs.com/zsymdbk/p/16748164.html