在 基本渲染概念 页面和使用绘制上下文 中,我们已经简要介绍了如何将内容渲染到 Hud,因此在本页中,我们将重点介绍 HudRenderCallback 事件和 deltaTick 参数。
HudRenderCallback
由 Fabric API 提供的 HudRenderCallback 事件每帧都会被调用,用于向 HUD 渲染内容。
要注册此事件,只需调用 HudRenderCallback.EVENT.register 并传入一个以 DrawContext 和一个 float (deltaTick) 为参数的 lambda 表达式即可。
绘制上下文可用于访问游戏提供的各种渲染工具,并访问原始矩阵堆栈。
要了解有关绘制上下文的更多信息,应该查看使用绘制上下文页面。
DeltaTick
deltaTick 是指距上一帧的时间,单位为秒。 这可以用来制作动画和其他基于时间的效果。
例如,假设要让颜色随时间变化。 可以使用 deltaTickManager 获得 deltaTick,并随时间存储以变化颜色。
java
HudRenderCallback.EVENT.register((context, tickDeltaManager) -> {
int color = 0xFFFF0000; // Red
int targetColor = 0xFF00FF00; // Green
// Total tick delta is stored in a field, so we can use it later.
totalTickDelta += tickDeltaManager.getTickDelta(true);
// "lerp" simply means "linear interpolation", which is a fancy way of saying "blend".
float lerpedAmount = MathHelper.abs(MathHelper.sin(totalTickDelta / 50F));
int lerpedColor = ColorHelper.Argb.lerp(lerpedAmount, color, targetColor);
// Draw a square with the lerped color.
// x1, x2, y1, y2, z, color
context.fill(0, 0, 100, 100, 0, lerpedColor);
});1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15


