Minecraft-2DDrawing-tutorial (3)

HUD 是什么?

可以参考 wiki, 我个人理解可能是与UI相似, 展示给用户的界面。
就像平时看到的血条、经验条等等。
Forge用 GuiIngameForge 类 替换了原版的 GuiIngame 类,为我们提供了一些事件,一起来看看。


怎么写自己的HUD?

可以监听 RenderGameOverlayEvent 事件,这样就可以插手HUD的渲染,阻止或者渲染你自己的HUD。

RenderGameOverlayEvent类有五个内部类:

我们可以监听Pre、Post来在渲染前后做操作。

如果你想阻止原版的某个HUD渲染,那么你可能需要知道它们的类型:

类型 描述
All 所有的
HELMET 头盔(列如南瓜头)
PORTAL 传送门
CROSSHAIRS 光标
BOSSHEALTH Boss血条
BOSSINFO 渲染血条上的文字信息,但这貌似是无法阻止的,你可以通过监听BOSSHEALTH来阻止,这会在BOSSINFO之前post
ARMOR 防御值
HEALTH 生命值
FOOD 饱食度
AIR 氧气值
HOTBAR 快捷物品栏
EXPERIENCE 经验
TEXT 文字
HEALTHMOUNT 坐骑的生命值
JUMPBAR 坐骑的跳跃条
CHAT 聊天文字信息
PLAYER_LIST Tab键的玩家列表
DEBUG debug 信息
POTION_ICONS 药水的图标
SUBTITLES 1.11新增的右下角提示
FPS_GRAPH Lagometer信息
VIGNETTE unknown

现在试着在屏幕上写一行字看看。

看看效果:

不过这么做的话,有点糟糕,现在切换到生存模式:

可以看到原来的材质都变成了字体的纹理上,这个时候需要手动绑定回去,原来的纹理是Gui类的静态变量ICONS,这是一张雪碧图,里面有游戏中需要用到的大部分图标:

再看看效果:


MC的颜色解析

例如这里的

1
0xFFFFFFFF

是一个十六进制的颜色代码,组成部分由:

1
0x    FF((AA)alpha)    FFFFFF(RRGGBB)

例: 0xaaFFFFFF
即为设置alpha值为0.666…(0xaa / 255)


简单的HUD信息展示例子

部分代码:



source

效果:

0%