UE 如何在控件蓝图里调用关卡蓝图里的自定义事件
这么做的原因
先说下为啥要这么做,首先我们要知道
在控件蓝图中无法很方便的像在关卡蓝图中一样
在UE编辑器里面选中 actor,就能创建对应actor的引用
这也导致了在控件蓝图中,无法很方便的设置对应actor 的属性从而达到我们想要的效果
因为你要先找到你想设置的actor,才能设置
在控件蓝图中如何找到我们想要的actor
上面说无法很方便的找到,其实也是有办法的,如这样
获取类的所有actor -> Actor Class 选择 SunSky,设置solar Time
自定义事件控制SunSky组件-案例
创建项目
我们先创建个项目,选择建筑
选择空白模版
选择 不带初学者内容包,启用光线追踪,项目名为 DIYEevent
初次创建可能为有点慢,创建完成后,就会有个SunSky组件,选中Sunsky组件,其中细节面板的Solar time 属性就是时间,通过控制这个可以实现一天时间的流逝,同时光照也会对应更新
创建立方体,查看阴影效果
我们拖一个立方体到场景中,就可以看到光照的阴影效果
关卡蓝图中创建自定义事件
取名为 aaa
添加关卡蓝图自定义事件的输入参数
选中自定义事件,在细节面板中,在输入中,增加命为 param 类型字符串的 输入,并打印输出,如下图
这时候我们运行测试下,在控制台输入
ce aaa 111
可以看到我们自定义事件的参数打印
创建UI控件蓝图
在内容浏览器鼠标右击,选择控件蓝图
命名为 Menu,如下
双击进入控件蓝图的编辑,在画布中拖入滑条,并简单设置一下滑条的最小值和最大值
将UI 控件显示到视口
回到关卡蓝图,设置以下事件
运行之后,滑条就可以显示了
滑条 值变更时 将值传入关卡蓝图中的自定义事件
回到控件编辑,找到事件 -> 值变更时 点击后面的 + 号
设置蓝图,如下
这时候我们运行看一下,可以看到每次拖动滑条,都会把值打印出来
这时候控件蓝图中的滑条值 就通过 自定义事件 传入到了关卡蓝图中了
设置SunSky的 SolarTime 的值
在世界大纲中选中SunSky,回到关卡蓝图中创建一个SunSky 的引用
设置关卡蓝图如下
这时候就能通过更新滑条的值,更新SunSky 的solarTime的值从而更新光照