🇷🇺 Русский (Russian)
🇷🇺 Русский (Russian)
Внешний вид
🇷🇺 Русский (Russian)
🇷🇺 Русский (Russian)
Внешний вид
This page is written for:
1.21
This page is written for:
1.21
Мы уже кратко затронули тему рендеринга объектов в HUD на странице Основные концепции рендеринга и Использование контекста рисования, поэтому на этой странице мы остановимся на событии HudRenderCallback
и параметре deltaTick
.
Событие HudRenderCallback
, предоставляемое Fabric API, вызывается в каждом кадре и используется для рендеринга объектов в HUD.
Чтобы зарегистрироваться на это событие, вы можете просто вызвать HudRenderCallback.EVENT.register
и передать lambda, которое принимает DrawContext
и float
(deltaTick) в качестве параметров.
Контекст отрисовки можно использовать для доступа к различным утилитам рендеринга, предоставляемым игрой, а также для доступа к стеку необработанных матриц.
Вам следует посетить страницу Контекст рисования, чтобы узнать больше о контексте рисования.
deltaTick
относится ко времени с момента последнего кадра в секундах. Это можно использовать для создания анимации и других временных эффектов.
Например, предположим, что вы хотите изменять цвет с течением времени. Вы можете использовать deltaTickManager
, чтобы получить deltaTick, и сохранять его с течением времени для преобразования цвета:
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);
});