作者:邱子鉴
创建时间:2016.10.29
最后更新:2016.11.25
通用组件
- Event_MatchBase。EventManager的基类
- Event_PersonalMatchEventManager,继承于Event_MatchBase。个人匹配相关事件。
- Event_RoomMatchEventManager,继承于Event_PersonalMatchEventManager。房间内匹配进入游戏相关事件。
-
Data_RoomInfoManager。处理房间config和role相关数据通用函数。
路径:/Game/UMG/Match/
需求说明
目前有很多可进入游戏的入口, 快速对战、创建房间、组队房间、合作模式、天梯赛、赛事等。有些是有房间信息的,有些没有,其中,很多事件、函数都是可复用的。so,基于目前的功能,将复用的这些东西整理出各种Manager供大家使用。在使用过程中, 如果有功能扩充的,也希望能够遵守下面介绍的设计规范。
控件优点
- 即拖即用。
- 避免遗漏事件。匹配进入游戏会有一套事件,将这些事件统一封装到Manager里,便于各个界面去实现。
- Data_**Manager。封装了房间相关的数据处理函数,便于复用。
-
统一游戏入口。 现在统一通过OnPreLoadMapFinishedDispatcher进入游戏,
Paste_Image.png
Paste_Image.png
设计规范
- 功能模块中,如有成套的事件需要处理,请封装~, BP名以“Event_”开头。
- 功能模块中,如有需要数据加工的,请封装~,BP名以"Data_"开头。
避免直接取warehouse数据,在UI内进行数据加工。
- 状态机接口实现,
Event Init Data Before Enter: 此处绑定事件,初始化数据源。可用Param_Struct传递数据。
Event Clear Data Before Exit: 解绑上面绑定的事件。& ClearAllPagesInViewport,清空当前状态下所有二级页面。
Event Enter State: 只用来AddSpePageToViewportWithFocus。
>初始化UI内容写到Contruct里。
Event Exit State: 退出游戏切换状态。
注意事项
-
andoird back功能。引擎4.13将"Be focuseable" 功能默认关闭,导致基于焦点传递事件的方法不可用。目前的解决方法是:
**在EntryMap的关卡蓝图中,绑定AndroidBack事件。
Paste_Image.png
Paste_Image.png
可以看到,GetTopestWidget这个函数,每次我们调用UIManger->AddToViewportWithFocus时,会自动记录widget到一个数组中,当返回时,会自动找到最上层的widget去关闭。如果你的二级界面不去继承UIBaseWidget,那么请自行处理android back功能。
-
页面状态栈。 状态之间的跳转会记录到状态栈里,当返回时,直接做出站处理即可。但是,我们房间设计需求是,在断线重连时,如果玩家在房间里,直接跳转状态到房间,或者进入游戏。此时,做返回处理时,需要特殊处理。会影响到的界面,InGamePage、GameResult、各个房间界面。写房间相关界面的负责人需要注意页面返回状态的逻辑。