GameMode、PlayerController、GameInstance 的作用
通过ProjectTB的菜单和战斗结构看到虚幻框架
该博客上撰写的文章是出于教学目的而创建的。 另外,文章中的信息可能不正确,请谨慎。
随着您的虚幻项目的发展,您可以轻松开始向 GameMode、PlayerController 和 GameInstance 随机添加功能。 ProjectTB重新组织了各个类别的职责,将主菜单和战斗分开。
GameMode是当前世界的规则
TBMainMenuGameMode负责主菜单流程,TBGameMode负责远征和战斗规则。 一种游戏模式不会接管所有菜单、角色选择和战斗。
MainMenu World
TBMainMenuGameMode
TBMainMenuPlayerController
TBMainMenuWidget
Battle World
TBGameMode
TBPlayerController
TBExpeditionHUDWidget
游戏模式是在世界发生变化时创建的。 因此,最好包含世界规则,例如当前战斗的输赢、部署限制和敌人创建。
PlayerController 是玩家的输入和意图
PlayerController 连接玩家向世界发出的命令,例如鼠标单击、选择和摄像机输入。 在ProjectTB中,左键盟友选择和敌人悬停信息是分开的,战斗目标指定也是分开的。
与其在按下 UI 按钮时将所有逻辑放入小部件中,不如向 Controller 或 GameMode 的验证函数发送请求更安全。
游戏实例在世界之间生存
即使您移动地图,GameInstance 也会被保留。 拥有比世界寿命更长的对象是件好事,例如从主菜单中选择的活动信息或全局子系统。
然而,如果你把所有的全局变量都放到GameInstance中,它就变成了一个巨大的管理器类。 UI 和存储等独立职责是UGameInstanceSubsystem可以分开。
选择类别的标准并不是一个方便的方法。 您需要决定数据应该存在于哪个世界、谁应该验证规则以及谁将拥有输入。