UI - scutrobotlab/RM2021_simulation GitHub Wiki

用户界面从程序启动到关闭都有很高的存在感,所以是一个值得认真设计的部分。在模拟器开发过程中,由于官方软件发布时间较晚,也有后续更改设计的可能,UI 部分对迭代有较高要求。2021 模拟器的 UI 主要分为四个部分:启动页、大厅页、游戏内 HUD、裁判视角 AR。其中,启动页和大厅页由于各占一个场景,UI 元素分布还算合理。在游戏场景里,HUD 与 AR 的 UI 元素分布比较混乱,不利于后期维护。

Unity UI 设计的最佳实践之一,是将 UI 单独置于一个场景中,后续根据需要异步加载 UI 场景。视具体需求,可能需要手动实现一个基于栈的面板管理框架,对 UI 进行简单组织。为了适应迭代需求,UI 的各组件尽可能分开实现,以方便替换某个组件。UI 的表现层应尽量与游戏逻辑解耦,大部分 UI 直接展示数据,可以抽象一个 Provider 来为 UI 整理数据,所有组件的数据统一走 Provider。Provider 最好通过一个参数设定当前角色,而不是直接从本地玩家处获取,这样才能在裁判、OB 等视角下正确显示第一人称界面。某些提示性的 UI 需要事件驱动,例如能量机关激活、击杀提示等。此类 UI 一般不会轻易增删,保持接口稳定即可。

另外,为做到良好的设备适配,UI 从最初编辑时就应该考虑自适应能力。合理使用 Horizontal Layout、Vertical Layout 等可以方便地使 UI 具有跨设备适配能力。RM 的用户界面并没有太多复杂元素,一般来说简单缩放就够了。

⚠️ **GitHub.com Fallback** ⚠️