
时:2022-7-16
在制作回合制战斗的DEMO时对Gamemode、GameState使用的总结。
目标功能

2.Gamemode和GameState的分工
官方文档:
https://docs.unrealengine.com/4.26/zh-CN/InteractiveExperiences/Framework/GameMode/
(1)最重要的一点:Gamemode只在Server运行,GameState在Server和每个Client分别运行
(2)对于需要考虑网络的多人游戏,则需要注意把需要进行同步的逻辑放在Gamemode中,不需要同步的逻辑放在GameState中
(3)在制作单人游戏中,我使用的方法是,GameState管游戏数据的存取,Gamemode则管游戏世界的各项逻辑。
3.工程实现
GameState:

Gamemode:



(1)在GameState中定义Enum进行阶段的划分,在一些游戏中可在Tick中进行阶段判断以及相关逻辑,在制作该Demo中没有刚需则不使用Tick。在GameState里还可以存储RoundIndex等游戏数据。
(2)我的方法是在Gamemode中使用接口调用GameState里修改阶段的接口对私有变量阶段进行修改,这样的好处是State不会被乱改乱得,其次还可以同时再针对不同阶段的修改时触发特殊的逻辑
(3)在阶段变更时,如果需要更新UI或者其他什么的连锁反应可以考虑使用代理去触发其他逻辑,这里没有这个需求就没写