【游戏编程扯淡精粹】HUD 与 Panel 的区别

2023-10-29 04:40

本文主要是介绍【游戏编程扯淡精粹】HUD 与 Panel 的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【游戏编程扯淡精粹】HUD 与 Panel 的区别

文章目录

  • 【游戏编程扯淡精粹】HUD 与 Panel 的区别
    • What is HUD?
    • What is Panel?
    • 下面这些是 HUD 还是 Panel?
    • Why?
    • #1 侵入式界面与沉浸感
    • #2 输入控制与界面导航
    • #3 界面深度和界面栈
    • #4 游戏类型和玩家操作实时性
    • #5 玩家体验与时间观

本文主要指游戏中的界面

What is HUD?

抬头显示器,游戏里有时也称为覆层(Overlay),3D 场景上面再覆盖一层 2D 的界面显示信息

Head-up display - Wikipedia

HUD 最早来自飞行辅助驾驶,即下图中的玻璃板

在这里插入图片描述

What is Panel?

一般意义的界面,和 App 界面差不多

Panel (computer software) - Wikipedia

下图是 Prey 的技能加点界面

在这里插入图片描述

下面这些是 HUD 还是 Panel?

Loot

在这里插入图片描述

Inventory

在这里插入图片描述

Loot

在这里插入图片描述

小地图

在这里插入图片描述

大地图

在这里插入图片描述

Why?

其实从纯引擎程序的角度,HUD 和 Panel 并没有区别,都是 2D UI,一样构造控件树进行布局和渲染

以我不太多的开发经验,有一天我发现我好像不太能区分我现在在做的是一个 HUD 还是一个 Panel,所以。。

#1 侵入式界面与沉浸感

常驻 HUD 会占据屏幕的一部分面积,挡住 3D 场景

如果界面屏占比很高,花里胡哨的会降低沉浸感

HUD 要做到需要可视化一些关键元素,而过于侵入式的复杂信息要放到 Panel 中


HUD on

在这里插入图片描述

HUD off

在这里插入图片描述

#2 输入控制与界面导航

HUD 可操作交互的数量是有限的,因为按键是有限的,你还需要大部分按键用来操作 3D 游戏

实际上,大部分 HUD 并没有分配输入控制

没有输入的 HUD 分两种,常驻 HUD 显示玩家状态,比如血量,小地图;

在这里插入图片描述

非常驻 HUD 暗示游戏事件触发,比如播报

在这里插入图片描述

输入导航,简单来说,就是鼠标 Cursor,和手柄上下左右十字键,以及摇杆

HUD 不需要导航,Panel 需要导航

因为导航的输入控制和游戏 3D 操作是冲突的,比如角色移动和视角移动

所以需要按下 Esc 呼出 Panel,暂停游戏的 3D 部分操作,把控制权交给 Panel 进行操作

不过有例外情况,本质上是 Contextual Input,在一定状态下,可以把部分输入控制移交给 HUD 导航

比如 Prey 里 Loot 的时候,可以用十字键导航 Loot Container 里的 Slot,而离开 Loot 范围,退出 Loot 状态,十字键又是一般的快捷键了

在这里插入图片描述

#3 界面深度和界面栈

HUD 只有一层,Panel 可以嵌套成界面栈,按 Esc 一层层返回

写过类似 Panel Manager 的想必更加深刻理解

#4 游戏类型和玩家操作实时性

比如 PUBG 吃鸡,线上多人射击竞技,实时性高,所以 HUD 比重多一些,尽量减少玩家“暂停”游戏操作界面的机会

比如文明5,策略经营,下棋类,Panel 比重多一些,慢慢看,慢慢想,也不着急,每走一步都可以暂停

#5 玩家体验与时间观

玩家使用这个界面元素时,体验的哪种时间观?下面给出一些关键字:

  • 过去:成长感、成就感、完成感、自豪感、参与感、进步感。
  • 现在:紧急情况、反应、微观决策、生存、战术。
  • 未来:发展、投资、延迟奖励、掌握、策略。

其实和前面提到的实时性有一些交集

HUD 强调当前状态,当前发生了什么事情

Panel 则强调过去和未来,之前已经做了什么,接下来要怎么规划

在这里插入图片描述

这篇关于【游戏编程扯淡精粹】HUD 与 Panel 的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298299

相关文章

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使