创游世界UI界面设计系统指南
一句话摘要
本文档系统介绍创游世界引擎中UI界面设计的完整方案,涵盖地图UI、操作UI、物体UI的切换控制、布局设计、数据绑定与联机优化策略。
适合谁阅读
- 需要设计游戏UI界面的创作者
- 想了解UI切换机制的开发者
- 需要解决联机UI卡顿问题的进阶用户
- 需要设计复杂UI系统的项目架构者
你将学到什么
- 三种UI类型的定义和使用场景
- UI切换的基本控制方法
- UI布局设计原则
- UI数据绑定策略
- 联机UI的优化方法
- 典型UI系统的设计方案
核心结论
⚠️ 说明:以下内容基于截图 OCR 与人工归纳,部分术语可能受 OCR 影响,建议在实际开发中验证。
- 创游世界有三种UI类型:地图UI、操作UI、物体UI,各有用途
- UI切换是界面流转的核心:通过广播或条件控制UI显示/隐藏
- 4.x版本的「当前UI」解决了联机卡顿:减少UI上传等待问题
- UI数据绑定要解耦:避免UI直接操作游戏数据
1. UI系统基础概念
1.1 三种UI类型
创游世界的UI系统分为三种类型:
| UI类型 | 定义 | 典型用途 |
|---|---|---|
| 地图UI | 显示在地图场景上的UI元素 | HUD、头顶血条、地图提示 |
| 操作UI | 覆盖在地图上的操作界面 | 开始菜单、设置面板、背包界面 |
| 物体UI | 挂载在特定物体上的UI组件 | 角色血条、名字标签、状态指示 |
1.2 三种UI的特点对比
| 特点 | 地图UI | 操作UI | 物体UI |
|---|---|---|---|
| 显示层级 | 中 | 高 | 低 |
| 控制方式 | 脚本控制显示/隐藏 | UI切换控制 | 跟随物体 |
| 联机同步 | 部分同步 | 主控同步 | 跟随物体同步 |
| 交互性 | 有限 | 完整 | 有限 |
| 适用场景 | 状态显示 | 表单界面 | 跟随信息 |
2. 地图UI设计
2.1 定义
地图UI 是显示在地图场景上的UI元素,通常用于:
- HUD(生命值、金币、任务进度)
- 头顶信息(角色名称、血条)
- 地图提示(任务指引、区域名称)
2.2 添加方式
- 在编辑器中找到「地图UI」选项
- 创建UI元素(文字、图片、进度条等)
- 设置默认显示状态
- 通过脚本控制显示/隐藏
2.3 基本控制
地图UI脚本:
当开始时
显示生命值UI
显示金币UI
当玩家受伤时
刷新生命值显示
播放动效 "生命变化"2.4 典型场景
场景 1:HUD显示
HUD控制器脚本:
当开始时
显示金币UI
显示生命UI
显示任务UI
当金币变化时
刷新金币显示
播放动效 "金币飘字"场景 2:任务指引
任务指引UI脚本:
当任务状态变化时
如果当前任务状态是 "进行中"
显示指引图标
设置指引目标
否则
隐藏指引图标3. 操作UI设计
3.1 定义
操作UI 是覆盖在地图上的界面,通常用于:
- 开始菜单
- 设置面板
- 背包界面
- 商店界面
- 对话框
3.2 UI切换机制
操作UI通过「UI切换」来控制显示/隐藏:
- 每个操作UI有独立的图层
- 可以设置默认显示/隐藏
- 通过脚本切换不同UI
3.3 基本控制
菜单控制器脚本:
当点击开始按钮时
发送广播 "打开主菜单"
主菜单UI脚本:
当收到广播 "打开主菜单" 时
显示主菜单UI
隐藏游戏HUD
当点击继续按钮时
隐藏主菜单UI
显示游戏HUD3.4 典型场景
场景 1:背包界面
背包按钮脚本:
当点击时
发送广播 "打开背包"
背包UI脚本:
当收到广播 "打开背包" 时
显示背包界面
刷新物品列表
发送广播 "暂停游戏"
当点击关闭按钮时
隐藏背包界面
发送广播 "继续游戏"场景 2:商店界面
商店UI脚本:
当收到广播 "打开商店" 时
显示商店界面
刷新商品列表
显示玩家金币
当点击购买按钮时
检查金币是否足够
如果足够
扣除金币
发放物品
刷新显示
否则
显示提示 "金币不足"4. 物体UI设计
4.1 定义
物体UI 是挂载在特定物体上的UI组件,常用于:
- 角色头顶血条
- NPC名字标签
- 状态指示图标
- 交互提示
4.2 添加方式
- 在物体上添加「物体UI」组件
- 创建UI元素作为子元素
- 设置UI相对于物体的位置
- 通过脚本控制内容
4.3 基本控制
角色血条UI脚本:
当开始时
刷新血条显示
当生命值变化时
刷新血条显示
当死亡时
隐藏血条4.4 典型场景
场景 1:敌人血条
敌人血条脚本:
当开始时
获取敌人最大生命值
显示血条
当受伤时
获取当前生命值
刷新血条进度
当死亡时
播放死亡动画
等待 0.5 秒
隐藏血条
销毁自身场景 2:名字标签
名字标签脚本:
当开始时
获取物体名称
显示名字标签
设置名字颜色5. UI数据绑定策略
5.1 数据绑定原则
UI显示的数据应该与游戏数据保持同步,遵循以下原则:
- 数据来源单一:每个数据只有一个来源
- UI只显示数据:UI不直接修改游戏数据
- 通过广播通信:UI发送请求广播,由业务逻辑处理
5.2 推荐的架构模式
游戏逻辑层:
处理所有业务逻辑
维护游戏数据
发送数据更新广播
UI层:
只负责显示
接收数据更新广播
发送用户操作请求广播
数据层:
存储游戏数据
提供数据访问接口5.3 具体实现
金币数据脚本(游戏逻辑层):
当开始时
从存档加载金币数据
发送广播 "刷新金币显示"
当金币变化时
保存金币数据
发送广播 "刷新金币显示"
金币显示脚本(UI层):
当收到广播 "刷新金币显示" 时
获取当前金币值
更新金币显示
购买按钮脚本(UI层):
当点击时
发送广播 "请求购买" 并携带文本 "物品ID"
购买处理脚本(游戏逻辑层):
当收到广播 "请求购买" 时
检查金币是否足够
如果足够
扣除金币
发放物品
发送广播 "购买结果" 并携带文本 "成功/失败"
购买结果显示脚本(UI层):
当收到广播 "购买结果" 时
显示购买结果6. 联机UI优化
6.1 旧版UI的问题
在4.x之前的版本中,UI同步存在以下问题:
- UI上传等待导致卡顿
- 每个操作都需要等待上传完成
- 多玩家同时操作UI时性能下降
6.2 4.x版本的「当前UI」
4.52.54+版本引入了「当前UI」概念,解决联机UI卡顿问题:
- 每个玩家只运行自己的UI逻辑
- 减少不必要的上传等待
- 显著提升联机性能
6.3 联机UI设计建议
- UI只发请求:业务逻辑在地图层处理
- 减少连续写入:避免频繁上传导致的延迟
- 使用地图广播下沉:确保联机时广播能正确处理
- 分离UI和逻辑:UI和数据分开,避免耦合
6.4 具体实现
联机模式下的UI设计:
玩家UI脚本(当前UI):
当点击购买按钮时
发送广播 "请求购买" 并携带文本 "物品ID"
显示"处理中..."
地图购买处理脚本(地图层):
当收到广播 "请求购买" 时
检查金币是否足够
处理购买逻辑
设置系统属性 "购买结果"
发送广播 "购买完成"
玩家UI更新脚本(当前UI):
当收到广播 "购买完成" 时
获取购买结果
显示结果
刷新UI显示7. UI布局设计
7.1 布局原则
- 信息优先级:重要信息放在显眼位置
- 一致性:同类信息使用统一的布局
- 留白:避免信息过于拥挤
- 可读性:文字大小和颜色要适合阅读
7.2 常用布局
HUD布局
┌─────────────────────────────────────┐
│ [任务提示] [金币][生命值] │
│ │
│ │
│ [游戏画面] │
│ │
│ │
│ [摇杆] │
└─────────────────────────────────────┘背包布局
┌─────────────────────────────────────┐
│ [背包] [X] │
├─────────────────────────────────────┤
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │物品1│ │物品2│ │物品3│ │物品4│ │
│ └─────┘ └─────┘ └─────┘ └─────┘ │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │物品5│ │物品6│ │物品7│ │物品8│ │
│ └─────┘ └─────┘ └─────┘ └─────┘ │
│ │
├─────────────────────────────────────┤
│ [物品名称] 数量: XX [使用] [卸下]│
└─────────────────────────────────────┘8. 常见问题
Q:UI显示在错误的位置怎么办?
A:检查:
- UI的锚点设置是否正确
- UI的父元素定位是否正确
- 是否需要调整UI的坐标
Q:UI数据不更新怎么办?
A:检查:
- 数据更新后是否发送了刷新广播
- UI是否正确接收了刷新广播
- UI的刷新逻辑是否正确
Q:联机时UI卡顿怎么办?
A:优化建议:
- 使用「当前UI」写法
- 减少连续多次写入
- 分离UI和业务逻辑
- 使用地图广播下沉
Q:多个UI重叠怎么办?
A:解决方式:
- 调整UI的层级顺序
- 使用遮罩控制显示范围
- 合理规划UI的切换时机
9. 注意事项
- UI和逻辑要分离:UI只负责显示,业务逻辑在地图层处理
- 避免直接修改数据:通过广播请求,由业务逻辑处理
- 联机要考虑同步:UI操作需要考虑多玩家场景
- 性能要注意:过多UI会影响渲染性能
10. 相关页面
11. 待验证问题
[待验证]UI组件的具体参数说明[待验证]UI层级的具体配置方式[待验证]不同平台的UI渲染性能差异[待验证]UI动画的最佳实践
12. 后续优化方向
- 补充UI组件的详细截图
- 添加更多UI系统的设计案例
- 完善联机UI的详细说明
- 增加UI动画的设计指南
