简单的UMG通信方式
有朋友看了我的文章《蓝图之间通信的几种常用方式》想知道UI间的参数传递

既然发问了,那我就来回答一下:
UE4的UI(Unreal Motion Graphics UI Designer )简称UMG也是蓝图的一种,因此它的通信方式也符合蓝图之间的通信方式,不过会有一些变化。

创建和直接传递
如果我们想在创建某个UI时候就传递一些变量,可以使用这种方式。

我们来到UI的图表视图,在变量下创建变量,选择生成时公开,那么这个变量将在UI创建的时候暴露出来。(控件变量无此选项)

这个时候我们就能在创建UI时候将变量传递给UI。

2.UI嵌套
如果UI里的控件数量、类型比较多,例如:玩家UI有:玩家状态,玩家属性等,这时候我们可以封装一个功能的UI,然后作为整体放在玩家UI。另外,设计者希望有些组合的控件可以重复利用,也会封装到一起。
在玩家UI里控制板的用户创建下可以找到自己创建的其他UI,拖拽到下方的层级里就实现了UI嵌套。在变量里就可以获取这些UI的参数信息。


UI可以嵌套很多层,例如玩家状态UI嵌套在玩家UI,玩家UI嵌套在主UI,这种通信是单向的,上级UI可以获取下级UI的信息,但下级UI不能获取上级UI的信息。
3.从类获取所有控件
和生成actor类似,从类获取控件是找到这类UI

这种方式可以从下级UI获取上级UI的信息,但将会和文件形成依赖,一般不推荐这种设计。

4.使用接口解耦
通过创建接口函数来解决文件间的相互依赖,有利于功能管理和扩展





UI方便的参数引用
在UMG的设计界面选择控件,在它的细节面板常常能看到这些绑定按钮,绑定按钮可以很方便的选取自己创建的变量,并且在运行中会实时更新这些变量。也可以绑定函数,这些函数也是在运行中实时更新的。


UMG间的几个简单通信方式就总结到这里,这些方式需要灵活运用,希望能帮到那位朋友和有需要的人。