| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unreal Engine蓝图编程学习(三) -> 正文阅读 |
|
[游戏开发]Unreal Engine蓝图编程学习(三) |
GUI是指Graphical User Interface,为玩家显示并广播重要信息。在这一章中,我们将设置一个GUI,用于跟踪显示玩家的血条、体力和弹药,并且我们将设置一个计数器。我们使用UMG UI编辑器来创建UI元素。 3.1 使用UMG创建简单的UI 为了创建显示玩家血条、体力和弹药数值,我们首先要创建可以跟踪这些数值的变量。 我们进入FirstCharacter蓝图,在这个蓝图中,我们要定义代表玩家状态的变量。? ? ? ? 我们创建一个变量PlayerHealth,然后选中这个变量。在细节面板中将变量类型改为浮点型。 ?然后将其改为可修改。同样的,我们创建浮点型的PlayerStamina和整型的PlayerCurrentAmo。最后还有整型的TargetKillCount。?然后我们分别对其设置默认值。 3.1.1 使用蓝图控件绘制形状 由于FPS的模板没有UI元素,我们需要新建一个文件夹来存储GUI内容。然后我们创建控件蓝图,命名HUD。 ?我们进入蓝图中,在编辑器的左边可以看到控制板(palette)面板,展开面板分类。我们可以看到一系列的容器列表。这些容器可以用来组织UI。找到Horizontal Box(水平框),选中它后将它从控制板中拖到层次结构中的画布面板下。然后我们拖入两个垂直框,嵌入到水平框下。 ?然后我们拖入文本框和进度条,形成如下图所示的结构: ?3.1.2 自定义血条和体力条的外观 我们希望UI元素能显示在屏幕上。在图形视口中,突出显示的大矩形框标示玩家视野的屏幕边界为画布。我们在细节面板中,调整进度条和文字框的大小。调整尺寸下为填充,然后选择颜色和对齐方式。? ?然后我们调整UI和屏幕边缘的锚点。我们希望UI元素能随着屏幕尺寸的变化仍在同样的相对位置上,锚点用于定义画布上控件的位置,并且可以适配屏幕尺寸。 3.1.3 创建弹药和敌人计数 我们现在着手弹药的计数和游戏目标显示,这个与之前的过程类似,只是将进度条替换数值。 我们创建Ammo:30和Targets Eliminated:0这两个,分别位于中间和右上角两个位置。 3.1.4 显示HUD 我们回到FirstPerson Character中,右击创建BeginPlay节点,然后放置触发器(现在版本的这个节点已经被创建,我们直接使用,断开和其他节点的连接但是不要删除)。 ?我们创建如下节点,然后连接起来。 这样我们成功的在上面创建了HUD,接下来我们要互动的改变这些值。? 3.2 关联玩家变量与UI元素值 为了使我们的UI元素能够获取玩家的变量值,需要到内容浏览器->UI,再次打开HUD控件蓝图进行设置。 3.2.1 为health和stamina创建绑定 为了让UI元素显示的数据和玩家player状态保持更新,我们要创建一个绑定。在HUD蓝图编辑器中,选中层次面板中的Health Bar,在Process中,选中Percent属性的创建绑定。 ?我们首先添加一个Get Player Character节点,然后从return value拖出一个引线,添加一个类型转换为FirstPersonCharacter节点并与之相连接。形成下面的节点: ?备注:
?接着,我们添加一个获得Player Health节点。最后,我们连接相应的节点: ?上面这些操作时连接health变量和UI中health进度条的所有操作。对于stamina变量,我们也进行同样的操作。这样我们测试一下,已经变成了红条和绿条。 ?下一步就是绑定Ammo count和Goal counters。 3.2.2 制作文本绑定 这次我们选中Ammo Left文本对象,同样创建绑定。然后创建如下的节点: ?最后一个是为了GoalTracker目标计数创建绑定。 接着我们需要创建事件来触发变量的改变。 ?3.3 获得子弹和摧毁目标的信息 为了让UI元素能够反映玩家在游戏世界中的交互信息,我们需要修改控制玩家和目标的蓝图。首先获取玩家在射击时子弹计数递减(ammo counter)的信息。 3.3.1减少子弹计数 FirstPersonCharacter蓝图管理玩家的开火信息,我们进入蓝图中找到Spawn projectile的模块。我们需要实现的功能是,射击一次后对当前弹药数量值减1。我们到这个模块的最右边,然后实现下面的连接: ?现在我们进入测试,子弹数量已经可以减1了。 ?3.3.2 增加已摧毁物体的计数 这部分暂时略过。 4 总结 在本章中,我们制作一个可以获取玩家与游戏世界交互信息的HUD增强了游戏体验。通过这些操作,建立了玩家与游戏的通信。到现在为止,我们我们已经简历第一人称射击游戏的架构,包括射击、目标和爆炸效果,以及为显示游戏状态的UI。 之后我们将开始从建设游戏架构过度到游戏设计部分。任何游戏的核心都是创建玩家们能够获取有趣的游戏体验的规则,虽然目前游戏中已经能够对射击做出基本的响应,但是整体缺少一个让玩家完成的终极目标。我们将通过建立一个玩家的胜利条件来纠正这一现状,同时提供额外的限制,使得游戏体验的功能更加全面。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 2:28:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |