游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:791

当前位置:游戏蛮牛 技术专区 教程分享

查看: 436|回复: 3

[系列教程] 从零开始学虚幻4游戏开发系列17

[复制链接]  [移动端链接]
排名
46076
昨日变化
14

41

主题

41

帖子

125

积分

Rank: 9Rank: 9Rank: 9

UID
257049
好友
0
蛮牛币
629
威望
0
注册时间
2017-11-30
在线时间
27 小时
最后登录
2018-2-1

专栏作家

发表于 2018-1-11 15:07:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 ifreecode 于 2018-1-11 17:03 编辑

好了,继续我们的学习。
在这一课的内容中,我们将了解函数的概念。使用函数的一个重要原因就是方便代码的组织。通过使用函数,我们可以把多个节点整合成单个节点。

以BP_Gamemanager蓝图中的Event BeginPlay为例,其中用到了两个函数:Restart和SetUpCamera。

图片1.png

如果不使用函数,那么以上部分可能是下面这个样子的~
图片2.png

图片3.png

如你所见,有了函数,一切看起来更加清爽了。

可重用性

我们之所以喜欢函数,还有一个重要的原因就是其可重用性。例如,如果我们希望重置计数器和计时器,那么久可以使用Restart函数轻松实现。

通过使用函数,我们可以节省大量的时间。

好了,现在你大概已经知道函数的作用了,那么接下来我们将使用函数来更新CounterText这个widget。

更新widget

当我们创建一个widget的时候,虚幻4引擎会自动创建一个到该widget的引用变量。不过遗憾的是,文本widget默认情况下并没有引用变量。因此我们无法直接设置其Text属性。不过幸运的是这一点很容易修复。

在Content Browser中找到并打开WBP_HUD,然后切换到Designer模式。
在编辑器左侧的Hierarchy面板中选中CounterText,然后在Details面板中勾选Is Variable checkbox。

图片4.png

现在我们就可以更新CounterText的内容了。接下来要做的就是创建一个函数,来更新文本内容。

创建Update更新函数

在编辑器中切换回Graph模式,然后在My Blueprint选项卡中点击Functions部分右侧的+号。
这样我们就创建了一个新的函数,然后自动打开其Graph视图。将函数重新命名为UpdateCounterText。

图片5.png

默认情况下,在Graph视图中已经包含了一个Entry节点。当函数执行时,这里就是函数的起点。

图片6.png

为了让CounterText可以显示ShapesCollected变量的数值,我们需要在二者之间创建关联。

将GameManager变量拖动到Event Graph视图中。点击节点右侧的蓝色输出接口,拖出一条线到空白区域,然后从弹出的菜单中选择Get Shapes Collected。

图片7.png

如果要设置文本,我们就需要使用SetText(Text)节点。将CounterText变量拖动到视图中。点击节点右侧的蓝色输出接口,拖出一条线到空白区域,然后从弹出的菜单中选择SetText(Text)节点。

图片8.png

SetText(Text)节点只接受Text类型的输入,但ShapesCollected变量则是Integer整数类型的。不过虚幻4显然已经替我们考虑到了这一点,当我们将某个Integer变量的输出接口连接到Text类型的输入接口时,会自动帮我们完成转换工作。


为了完成函数,我们还需要将函数的Entry节点连接到SetText函数节点上,如图所示。

图片9.png

事件的执行顺序如下:
1.当我们调用UpdateCounterText函数时,首先它会从BP_GameManager中获取ShapesCollected变量
2.ToText(int)节点将把ShapesCollected的值转换成Text类型。
3.SetText(Text)函数将会把CounterText的文本内容设置为ToText(int)的输出结果。


接下来我们要做的就是当玩家收集某个形状的时候调用UpdateCounterText方法。

调用Update函数

最适合调用UpdateCounterText函数的地方就是当游戏中所收集到的形状ShapesCollected数量增加时。这里我已经创建了一个名为IncrementShapesCollected的函数,可以增加计数器的数量。每当形状叠加到玩家上时,就会调用该函数。

图片11.png

点击工具栏上的Compile按钮,然后返回BP_GameManager。

最后,在我们调用UpdateCounterText之前,需要为WBP_HUD创建一个引用。

具体操作如下:
1.在Event Graph中找到创建和显示WBP_HUD的地方
2.左键单击,然后从Create Widget节点的Return Value接口处拖一条线出来。
3.在空白处释放,并选择Promote to variable
4.将新的节点添加到节点链中。


当我们创建了变量后,可以将其重命名为HUDWidget。

图片12.png


接下来,从Set HUDWidget节点的右侧接口拖一条线到空白区,然后添加一个UpdateCounterText节点。这样就可以在游戏开始后让CounterText现实ShapesCollected的值。

接下来在My Blueprint面板找到Functions部分,双击IncrementShapesCollected,打开其graph。

图片13.png


把HUDWidget变量拖动到graph中,按住鼠标左键从其接口拖一条线到空白区,添加一个UpdateCounterText节点,然后使用以下方式连接:

图片14.png

好了,现在只要IncrementShapesCollected开始执行,就会自动将ShapesCollected加1,并调用UpdateCounterText函数。而这个函数则会将CounterText的内容更新为ShapesCollected的数值。

图片15.png

点击工具栏上的Compile按钮,然后关闭BP_GameManager。点击主编辑器你上的Play按钮,然后可以开始收集形状,并观察CounterText widget的内容变化。

图片16.png

好了,本课的内容到此为止。
在下一课的内容中,我们将使用另一个名为binding的方法来更新TimerText widget的内容。

温馨提示:
本系列图文连载内容首发于我的微信公众号,2018年1月5日起,每周至少更新一次。
图片1.png
如果你有关于虚拟现实方面的任何问题,欢迎关注我的微信公众号:vrlife,参与互动问答。





回复

使用道具 举报

7日久生情
2723/5000
排名
2958
昨日变化
10

2

主题

1840

帖子

2723

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
10437
威望
0
注册时间
2017-9-6
在线时间
407 小时
最后登录
2018-10-19
发表于 2018-1-12 07:32:12 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
1866/5000
排名
3077
昨日变化

0

主题

1112

帖子

1866

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
189581
好友
0
蛮牛币
2608
威望
0
注册时间
2016-12-5
在线时间
300 小时
最后登录
2018-10-19
发表于 2018-1-12 08:48:23 | 显示全部楼层
很不错  教程很好

回复 支持 反对

使用道具 举报

7日久生情
3301/5000
排名
1941
昨日变化
7

0

主题

2122

帖子

3301

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
1
蛮牛币
2410
威望
0
注册时间
2017-7-12
在线时间
513 小时
最后登录
2018-10-19

活力之星

发表于 2018-1-12 11:54:12 | 显示全部楼层
谢谢分享

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表