虚幻UE4 显示健康,能量和弹药 Weight编辑实时同步游戏
前期需要的项目设置
-
单击内容浏览器中的添加新按钮,然后在用户界面下选择Widget Blueprint并将其命名为HUD。
所有的用户界面元素(平视显示器,菜单等)将被创建并安置在一个Widget蓝图内。Widget Blueprint允许您在视觉上布局UI元素,并为这些元素提供脚本功能。我们现在正在创建这个游戏,以便我们可以在我们的玩家角色在世界上产生时显示它,但是我们将在稍后进行设置。
-
创建另外两个Widget蓝图,一个叫做MainMenu,另一个叫做PauseMenu。
-
在内容浏览器中右键单击并创建一个名为Main的新级别。
我们将在后面的主菜单设置指南中使用它。
-
在内容浏览器,打开FirstPersonCharacter位于下蓝图内容/ FirstPersonBP /蓝图文件夹。
这是可玩角色的蓝图,我们将在其中创建一些信息传递给我们的HUD Widget蓝图以进行展示。
-
在我的蓝图窗口中,单击添加变量按钮。
-
在新变量的Details面板中,将其命名为Health,将其更改为Float变量类型,并将Default Value设置为1.0。
这个变量将代表我们将在HUD上显示的玩家角色的健康状况。
-
创建另一个名为Energy的Float变量,默认值为1.0。
这将代表我们将在HUD上显示的玩家角色的能量。
-
创建的另一个变量整数称为类型弹药有默认值的25。
-
再创建一个名为MaxAmmo的整数变量,默认值为25。
-
在Graph窗口中,右键单击并添加一个Event Begin Play节点。
-
拖动事件开始播放,然后添加一个类设置为您的HUD小工具蓝图创建小工具节点。
-
关的返回值的的创建HUD_C窗口小部件,选择升级为变量,并将其命名HUD参考。
这将在游戏开始时创建我们的HUD Widget Blueprint,并将其存储为稍后可以访问的变量。这对于稍后调用HUD的功能或设置属性非常有用,例如,如果要在游戏暂停时隐藏HUD,则可以通过此变量访问HUD。
-
拖出Set节点的out引脚,并添加Add to Viewport节点。
顾名思义,这会将指定为目标的Widget Blueprint添加到玩家的视口中,并在屏幕上进行绘制。
调整字符变量
在开始生成我们的实际HUD之前,我们要做的最后一件事是为我们的字符变量提供一种方法。
-
在FirstPersonCharacter Blueprint中,按住Alt拖动Energy变量,并将其放在Jump脚本旁边。
-
按住Ctrl键并拖动Energy变量的副本,并将其连接到设置为0.25的Float - Float节点,并如图所示进行连接。
每次角色跳跃时,角色的当前能量值都会减去0.25。
-
为Health变量设置相同的脚本,但使用F键事件(或任何其他按键事件)进行测试。
这将允许我们测试,只要按下一个键,我们的健康变量就可以通过我们的HUD正确显示。
-
找到Spawn Projectile脚本并在InputAction Fire事件之后,右键单击并添加一个分支节点。
-
对于分支条件,按住Ctrl拖动连接到Integer> Integer变量的Ammo变量,将其设置为0并连接,如图所示。
这将只允许玩家发射弹药,如果他们的弹药大于零。
-
在结束菌种弹脚本继在位置播放声音节点,设置弹药等于弹药- 1。
每当玩家发射弹丸时,这将会减去1个弹药,给我们显示在我们的HUD上的东西。
-
编译并保存,然后关闭蓝图。
-
在这里,我们将开始设置我们的HUD的视觉方面。
-
打开你的HUD Widget Blueprint来访问Widget Blueprint Editor。
在Widget Blueprint Editor中,我们可以提供HUD的可视化布局和脚本功能。
-
里面的面板下的窗口面板中,将一个水平box到CanvasPanel在层次窗口。
面板小部件有点像其他小部件的容器,并为其内部的小部件提供附加功能。
-
在面板下方,将两个垂直框拖到水平框上。
-
在Common下,将两个文本小部件拖到第一个垂直框上,将两个进度条拖动到第二个垂直框上。
-
选择水平框,然后在图中调整框的大小,并将其放置在窗口的左上角。
进度条会显得非常小,但不用担心,接下来我们会解决这个问题。
-
选择这两个进度条中,则详细信息面板中设置既要填充的大小。
-
选择包含进度条的垂直框,并将其设置为填充。
-
再次选择“ 水平方块”并调整其大小,以使小节与文本对齐。
-
选择最上面的文字在widget 层次窗口,然后在详细信息面板下面的内容输入健康:。
对其他文本部件做相同的处理,但将其标记为能量,因此您的图形如下所示。
-
选择“ 运行状况”旁边的“ 进度栏”,然后在“ 详细信息”面板中将“ 填充颜色”和“不透明度”设置为绿色。
您可能会注意到进度条在分配颜色时不会改变颜色。这是因为填充条的百分比值被设置为0.0(你可以改变这个来测试不同的颜色,以后我们会把它连接到我们角色的健康值)。
-
同时为能量条设置填充颜色(我们选择了橙色)。
-
为了显示Ammo,使用上面的方法,将小部件添加到层次结构中,以便您的设置如下所示。
-
选择包含弹药信息的水平框,调整其大小并将其放置在右上角。
-
在“ 水平方框”仍处于选中状态的情况下,在“ 详细信息”面板中单击“ 锚点”并选择右上角的“锚点”
这会将锚牌移到屏幕的右上角。
通过锚定小部件,您可以指示小部件,无论屏幕大小如何,相对于锚牌的位置,它都会出现在其放置的位置。换句话说,当屏幕尺寸发生变化时,移动窗口小部件距锚牌的位置相同的距离(在这个例子中距离屏幕右上角的距离相同)。
脚本:健康,能量和弹药
现在我们有了我们的可视化布局,我们可以添加钩子来提供HUD元素背后的功能。
-
点击Widget Blueprint Editor窗口右上角的Graph按钮。
-
在“ 事件构造”节点下的“ 图形 ”中,右键单击并添加“ 获取播放机角色”节点。
-
拖出返回值引脚并选择Cast to FirstPersonCharacter
在这里,我们正在检查玩家角色所使用的角色蓝图是否真的是第一人称角色蓝图。
-
拖出As First Person字符引脚并选择Promote to Variable(将其命名为我的字符),然后如图所示进行连接。
这将允许我们访问FirstPersonCharacter Blueprint中包含的变量。
-
点击编译工具栏上,编译脚本。
-
返回到设计选项卡,选择进度栏旁边的健康。
-
在详细信息下面板进步,单击绑定选项旁边的百分比,并将其设置为使用健康从MyCharacter。
这将Progress Bar的值绑定到我们的First Person字符蓝图中的Health变量。现在,当我们的人物蓝图中的健康值发生变化时,它也会在我们的HUD中自动更新。绑定后,您可能还会注意到进度栏不会更改。那是因为我们已经说过这个事情发生在Event Construct(或者当HUD被构造时,当游戏开始时发生)。
-
选择能量旁边的进度条并重复上面的过程,从MyCharacter绑定百分比到能量。
-
选择25以下的弹药文本,然后在详细信息面板中的文本,单击绑定和创建绑定。
现在,就像我们以前使用Sub-Object Properties来绑定相同类型的属性一样,我们也可以创建自己的自定义绑定。在这里,我们将把我们的Text属性绑定到我们的第一人称角色蓝图的Integer属性上,给我们展示当前的Ammo。
-
在创建并自动打开的函数内部,按住Ctrl键并将MyCharacter变量拖动到图形中。
-
拖动“我的字符”(MyCharacter)并选择“获得弹药”(Ammo)。
-
弹药引脚连接到返回值中的返回节点。
连接时,将自动为您创建转换节点至文本。
-
对其他25个文本重复上述过程,并创建“最大弹药”文本的绑定。
如果你的最大弹药保持不变,你可能不需要这样做,但是这可以让你改变它。
-
单击编译并保存,然后单击播放按钮以在编辑器中播放。
-