UE4 CarSelection拆解

第一部分——主要逻辑

一、BP_CarSelectionGameMode

1.1、BeginPlay

获取并保存StartGame关卡送过来的参数
在这里插入图片描述

1.2、InitializeHUDForPlayer

对该函数进行重写来控制HUD的生成,参考:
AGameModeBase Document

在这里插入图片描述

1.3、变量和默认值

在这里插入图片描述

Use Seamless Travel:游戏使用无缝旅行,对多人游戏极其重要。
好处是背景加载Level和客户端不断开链接

1.4、BP_CarSelectionGameState

在这里插入图片描述

二、BP_CarSelectionPlayerController

2.1、ClientCreateCarSelectionMenu

寻找到可以选择的汽车,并设置对应Button

函数中所有参数界面都不进行Replicate
个人认为这种行为是明显增加耦合度的,不推荐
在这里插入图片描述

在这里插入图片描述

2.2、ServerChangePlayerName

RunOnServer
在这里插入图片描述
在这里插入图片描述

2.3、OnBecomeViewTarget

调用时应该是在准备离开当前地图时,此时关闭主界面并打开加载界面
在这里插入图片描述

2.4、变量与默认值

在这里插入图片描述

三、BP_CarSelectionPlayerState

注意:继承自BP_CarPlayerState

3.1、BeginPlay

创建对应的widget显示该玩家
在这里插入图片描述

3.2、EndPlay

当Actor被销毁或者离开当前关卡后调用

在这里插入图片描述

3.3、参数与默认值

自己存储,当离开时在其他客户端RemoveFromParent
在这里插入图片描述

四、BP_CarSelectionPawn

4.1、OnBecomeViewTarget

当Controller以他为视口时(误),证明已经完成当前的地图加载了,关闭加载界面
在这里插入图片描述

五、BP_CarSelectionRoom

直接用于背景搭建,CarPreviewer直接被其他类设置就行
在这里插入图片描述

第二部分——UI逻辑

一、BP_CarSelectionWidget

在这里插入图片描述

1.1、Construct

绑定退出界面的确定退出和取消退出按钮
在这里插入图片描述

1.2、CreateCarButtons

对所有的可选汽车创建对应Widget
在这里插入图片描述

1.3、OnPlayerNameTextCommitted

让服务器的Controller修改玩家名字,同时修改UI
在这里插入图片描述
设置要Focus在那个按钮上,不重要
在这里插入图片描述

1.4、StartGame

直接Server Travel+地图名跳转,貌似很简单
在这里插入图片描述

1.5、OnKeyDown

主要处理Esc键事件
在这里插入图片描述
如果当前选中了车,则取消选中
在这里插入图片描述
如果没有选中车,则进入退出界面
在这里插入图片描述

1.6、OnFocusReceived

在这里插入图片描述

1.7、Are All Players Ready

从GameState中一个一个PlayerState查看是否选中了车辆
在这里插入图片描述

1.8、Create Player Row

创建玩家的名字列表,进来一个创建一个
在这里插入图片描述

1.9、属性与默认值

在这里插入图片描述

二、BP_CarCheckBox

2.1、Construct

设置显示的名字
在这里插入图片描述

2.2、OnKeyDown

按Enter后选择车辆
在这里插入图片描述

2.3、OnFocus

当被Focus时设置对应骨骼模型
在这里插入图片描述

2.4、OnMouseButtonDown

类似OnFocus在这里插入图片描述

2.5、OnMouseMove

在这里插入图片描述

2.6、SetCar

在这里插入图片描述
在这里插入图片描述

2.7 变量和默认值

在这里插入图片描述

三、BP_CarSelectionPlayerRow

在这里插入图片描述

3.1、Get Player Name Text Color

在这里插入图片描述

3.2、属性和变量值

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值