记忆游戏

CardGame_Board.png

概述

记忆游戏示例是在PC/移动平台上的简单逻辑游戏示例。 它仅使用 蓝图 构建,无需额外的代码支持。

游戏逻辑

BP_LogicMem 蓝图 衍生于 游戏模式 。您可以在 蓝图 中设置默认Pawn类,HUD类,玩家控制器类,观察者类以及GameReplicationInfo类。

BP_LogicMem 蓝图 中还存在两种 图表EventGraph 包含了游戏的初始设置,游戏所需的必要逻辑测试,以及额外的功能,诸如移动回菜单并显示具有 提示 按钮的所有卡牌。 FinishGame 处理玩家是赢还是输,奖励玩家的星星数量,以及必要的游戏结束清理。

BP_CounterBP_LogicMem 调用,使用 蓝图接口 来变更显示的步数,并在可走步数低于3步时对可走步数的文本颜色进行变更。

卡牌处理

BP_DeckMemBP_CardMem 蓝图 是管理如何在游戏中定义并展示卡牌的主要 蓝图BP_DeckMem 的一个实例被放置在游戏关卡中,并且其处理 BP_CardMem 的生成。

BP_DeckMem 包含创建并拖曳卡牌组,生成卡牌,在板上放置卡牌并在按下 提示 按钮时显示所有卡牌的逻辑。 拖曳卡牌组的网络被存储在 Shuffle (拖曳)函数中,它在准备新游戏时在主 EventGraph (事件图表)中进行调用。在拖曳了卡牌组后, BP_DeckMem 生成卡牌,卡牌基于卡牌的总体数量在不同的位置进行放置。板上的每个位置都有索引: CardDeckObjects 数组包含索引中的 BP_CardMem 蓝图 ,而 CardDeckShuffled 数组存储该索引的卡牌类型的信息。 BP_DeckMem 中的 旋转 事件会在按下 提示 按钮时翻转所有的卡牌。

BP_CardMem 定义了每张卡牌的图像,定义了放置,翻转和移除卡牌的动画,并设置了在比较卡牌时使用的 粒子特效 和声音。

CardGame_ParticleEffects_Right.png

点击输入

BP_PlayerControllerMem 蓝图 启用了鼠标接口。点击事件被启用,而鼠标移动事件则没有。包含点击事件的 蓝图BP_MenuMem, BP_CardMemBP_Scoreboard 。这些 Assign OnClicked (点击后指派) 节点 都从 ReceivedBeginPlay (获取后开始播放)事件中激活,这些事件会在玩家开始游戏后进行触发。

Assign OnClicked 节点 创建绑定于代理OnClicked的事件。 代理是让 蓝图 组件报告其状态并基于其状态变更而触发事件的方式。 例如,当我们在游戏中点击 提示按钮 后,它会报告该点击,并且会触发 提示按钮 的OnClicked代理,从而激活会导致所有放置的卡牌翻转的节点序列。

变量 BlockClick (阻止点击)旨在防止玩家在卡牌已经翻转或卡牌正在翻转的过程中对卡牌进行点击。

固定相机

BP_LogicMem 蓝图SpectatorPawn 定义为默认的Pawn类。记忆游戏的 关卡蓝图 在PlayerStart(玩家起始外置处)放置 SpectatorPawn (观察Pawn),并且 SpectatorPawn 的属性使得相机在整个游戏中保持不动。

菜单

Memory Game (记忆游戏)起始菜单在 BP_MenuMem 蓝图 中使用简单的 StaticMeshComponents (静态网格物体组件)进行设置。 TextRenderComponents 被用于文本和数字,而 Timeline (时间轴)被用来将菜单移出游戏窗口。 使用菜单来对使用的卡牌数量以及是否应使用在成对时会终止游戏的黑牌进行变量设置。 这些变量和 BPI_Communication 蓝图接口 一起被发送到 BP_LogicMem 以及 BP_DeckMem 蓝图

CardGameMenu.png

BP_Scoreboard 蓝图 使用 StaticMeshComponents (静态网格物体组件)和 TextRenderComponents (文本渲染器组件)的组合来创建出现在游戏结束处的摘要菜单。

CardGameEndMenu.png