UI System
Opened this issue · 2 comments
LovelyCatHyt commented
具体的需求项目:
- 暂停/恢复按钮, 退出游戏按钮
- [ ] 可以随时召唤的在场景中固定位置(和大小?)的标签 - 设置项目, 虽然目前只有音量相关的可以设置
- #14
- ListView: 列表视图, 能管理列表元素, 但也可以做一个普通的没代码的模板, 然后由具体的业务来处理具体的问题.
类结构: 无法确定, 大部分情况直接在 Inspector 里指定 UnityEvent 也差不多
LovelyCatHyt commented
目前的 UI 的布局, 依赖 RectTransform 的布局功能基本足够.
利用 Prefab, 还可以很容易地实现 UI 模板, 保证同种 UI 的统一性
一个可能优化的点: 显示结构化的数据时, 仍然需要手动完成"数据绑定"的功能, 可以利用反射一步到位. 另外, 如果暂时不打算构建这个不太简单的系统, 可以直接拿现成的 JObject 来获取属性列表.
另一个硬伤是, 仍缺乏动态显示的 UI 的管理机制, 直接设置 SetActive 似乎太粗暴了. 根据个人使用软件的体验, 计划一个基于栈的 Ui 结构: 点击按钮打开 UI 时, 往 UI 容器栈里添加这个打开的 UI, 而返回按钮, 或者点击画面空白处, 显然就是 Pop 一个元素. 根据栈中元素的有无决定是否暂停游戏/阻断游戏地图上的输入操作(根据具体情况分析哪种更合理)
LovelyCatHyt commented
当前选用方案: 为通用的 UI 元素(如 Text)制作 prefab, 保证同种 UI 的统一性. 其它交互功能单独设计, 因为目前几乎不存在多个窗口之间的依赖和控制关系
下一个可以做成 prefab 的 UI:
- 通用可拖拽窗口. 窗口获取物体中关心窗口事件的组件, 在打开/关闭/拖拽时触发事件