UE4 组件 (对话组件)
制作一个可以生成对话气泡,显示对话台词的简单组件。这个组件要的变量:台词(外部传入)。功能:开始对话(生成气泡UI) ,结束对话。
一、对话组件创建
二、开始对话事件
1、注意这里获取的是 owner(拥有者) ,组件可能挂到随意对象上。因为这个对象不固定,所以不能获取玩家角色或者第三人称角色。 按类添加组件
2.这里1添加的组件时widget组件,是动态生成的,不是和bpc_talk一样手动挂上的。生成后对象就有了widget组件,但是只是一个占位符,里面是空的,需要4给它赋予控件。 这里设置的是这个组件其他属性(显示空间、碰撞、位置)
3.创建UI气泡控件(这个控件要放入控件(widget)组件中去的),它要台词信息,所以生成时候作为接口暴露出来。 这里Owning actor也是自己创建并暴露的接口。Owning Player则是节点默认自带的。
4.控件对象赋予控件组件。
三、结束对话事件
询问之前创建的控件组件是否有效,并设置为空。
四、UI控件制作
1.前端
按钮在前,覆层,文本和背景。文本换行要自动包裹文本,并且文本变量化。
2.后端
变量创建:按钮用于点击文本框切换下一句台词。 剧本由外部台词传入,num表示剧本语句索引。Owning actor表示拥有者,由外部导入。因为这个UI控件生成时并没任何拥有者,是后面把它作为了控件组件的控件实体。它无法像bpc_talk一样获取到拥有者。需要外部传入。
UI显示时,默认显示第一句话,人物无法接受输入,只有UI能响应输入,显示鼠标。
给按钮添加单击事件,索引加1,显示下一句台词。索引超过剧本长度时代表台词说完,需要结束对话。这里这个控件并不是其他控件的子项,所以不是用remove from parent移除,而是通过调用之前组件的 结束对话事件。所以这里要通过拥有者找到组件,再调用组件方法。输入和鼠标恢复。
五、对象挂组件
1.挂上组件
2.创建剧本台词
3.调用组件方法。 注意开始对话前,要先退出之前的对话。