UE4_用户控件_3_用户控件输入数据的方法

祝愿大美兰陵越来越好!

一、效果展示:

 二、先制作一个角色

1、新建个父类为pawn的蓝图类。更名为BP_Image_Character。

2、这个角色只是用于观察场景,并与场景中的物体相碰撞用的,所以不需要骨骼网格体,

3、但是我们需要响应键盘和鼠标事件,可以把第三人称角色复制过来,这样角色就能移动了。

4、我们需要角色与胶囊体不同实例碰撞时创建不同的用户控件,所以这里得需要一个用户控件类得引用型变量。

5、我们自定义一个显示控件的事件

发现控件类图类的引用和用户控类引用不兼容,修改变量类型。

我们需要添加到视口,同时设置输入模式。

6、同样我们需要一个把它清除的自定义事件

7、因为所有控件的退出按钮是一样的,所以这里创建一个公共的退出按钮。

创建按钮的点击事件,当点击时调用角色的自定义事件clearwidget。

三、新建个GameMode

在 UE4 中,每一个世界(World)有多个 Level(关卡),而每个关卡又可以设定自己的 GameMode(游戏模式),从而控制游戏的玩法。

### UE4 用户控件继承 C++ 类时出现的崩溃解决方案 当UE4中的用户控件继承自C++类出现问题并导致崩溃时,通常涉及多个方面的原因。以下是详细的排查和解决问题的方法: #### 1. 确认基类声明 确保所使用的C++类已经正确标记为可被蓝图扩展。这涉及到在类定义中加入`BLUEPRINTABLE`宏以及设置合适的访问修饰符。 ```cpp UCLASS(Blueprintable) class MYPROJECT_API UCefControl : public UUserWidget { GENERATED_BODY() }; ``` 此段代码展示了如何使一个名为 `UCefControl` 的组件能够被蓝图继承[^1]。 #### 2. 初始化顺序与资源管理 对于像浏览器这样的复杂子系统,在构造器内部直接初始化可能会引发问题。应该考虑延迟加载或按需创建必要的实例。例如,在上述提到的情况中,应当避免立即调用`CreateBrowser()`函数;相反地,可以在首次显示页面之前通过特定事件触发其创建过程。 #### 3. 渲染逻辑优化 考虑到渲染过程中可能存在的同步/异步通信错误,建议仔细审查`OnPaint`回调机制及其关联的数据流控制。特别是要关注跨线程操作的安全性和效率,比如使用双缓冲技术来减少闪烁现象,并确保所有UI更新都在主线程上完成。 #### 4. 错误处理增强 加强异常捕获能力,特别是在外部库接口处(如CEF),以便及时发现潜在的风险点。同时记录日志文件有助于后续分析具体失败原因。可以利用Unreal Engine内置的日志系统来进行调试输出。 ```cpp if (!browser_) { // 创建失败后的备用措施... UE_LOG(LogTemp, Warning, TEXT("Failed to create browser")); } ``` 这段伪代码示范了遇到无法成功建立连接的情况下应该如何响应。 #### 5. 验证输入行为源注册 虽然这部分内容看似不直接相关于当前讨论的主题,但如果项目中有集成类似的交互工具,则需要注意按照规定的方式注册动作集,防止因未正确定义而引起的不稳定因素。参见提供的API文档说明以获取更多细节[^2]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Growthofnotes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值