UE 如何在控件蓝图里调用关卡蓝图里的自定义事件

发布时间 2023-09-14 11:17:42作者: makalo

这么做的原因

先说下为啥要这么做,首先我们要知道

在控件蓝图中无法很方便的像在关卡蓝图中一样

在UE编辑器里面选中 actor,就能创建对应actor的引用

这也导致了在控件蓝图中,无法很方便的设置对应actor 的属性从而达到我们想要的效果

因为你要先找到你想设置的actor,才能设置

在控件蓝图中如何找到我们想要的actor

上面说无法很方便的找到,其实也是有办法的,如这样

获取类的所有actor -> Actor Class 选择 SunSky,设置solar Time

image-20230913173237368

自定义事件控制SunSky组件-案例

创建项目

我们先创建个项目,选择建筑

image-20230914091637876

选择空白模版

image-20230914091730442

选择 不带初学者内容包,启用光线追踪,项目名为 DIYEevent

image-20230914091909802

初次创建可能为有点慢,创建完成后,就会有个SunSky组件,选中Sunsky组件,其中细节面板的Solar time 属性就是时间,通过控制这个可以实现一天时间的流逝,同时光照也会对应更新

image-20230914092048791

创建立方体,查看阴影效果

我们拖一个立方体到场景中,就可以看到光照的阴影效果

image-20230914092432597

关卡蓝图中创建自定义事件

image-20230914092852158

取名为 aaa

image-20230914092932617

添加关卡蓝图自定义事件的输入参数

选中自定义事件,在细节面板中,在输入中,增加命为 param 类型字符串的 输入,并打印输出,如下图

image-20230914103102265

这时候我们运行测试下,在控制台输入

ce aaa 111

可以看到我们自定义事件的参数打印

image-20230914103359417

创建UI控件蓝图

在内容浏览器鼠标右击,选择控件蓝图

image-20230914093753891

命名为 Menu,如下

image-20230914093900724

双击进入控件蓝图的编辑,在画布中拖入滑条,并简单设置一下滑条的最小值和最大值

image-20230914094129893

将UI 控件显示到视口

回到关卡蓝图,设置以下事件

image-20230914094546236

运行之后,滑条就可以显示了

image-20230914094622389

滑条 值变更时 将值传入关卡蓝图中的自定义事件

回到控件编辑,找到事件 -> 值变更时 点击后面的 + 号

image-20230914094918769

设置蓝图,如下

image-20230914103620359

这时候我们运行看一下,可以看到每次拖动滑条,都会把值打印出来

image-20230914103722831

这时候控件蓝图中的滑条值 就通过 自定义事件 传入到了关卡蓝图中了

设置SunSky的 SolarTime 的值

在世界大纲中选中SunSky,回到关卡蓝图中创建一个SunSky 的引用

image-20230914110722854

设置关卡蓝图如下

image-20230914110818241

这时候就能通过更新滑条的值,更新SunSky 的solarTime的值从而更新光照