You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FabricMC中如何修改TextRender.draw渲染的文本内容

解决Minecraft模组中动态更新渲染文本的问题

核心思路

Minecraft的屏幕渲染是每帧重复执行的,只要让渲染的文本内容绑定到一个可变变量,每帧渲染时读取变量的最新值,就能实现文本动态更新。

具体实现步骤

  1. 定义可变变量
    在你的客户端渲染类(比如自定义Overlay渲染类、GUI类)中,声明可修改的成员变量:
// 示例1:用于动态数值的int变量
private int dynamicCount = 0;
// 示例2:直接使用可变文本对象
private MutableText dynamicText = Text.literal("初始内容");
  1. 绑定变量到渲染逻辑
    将原固定文本替换为可变变量,确保这段渲染代码在每帧都会执行(比如放在render方法或渲染事件回调中):
// 用int变量生成文本渲染
client.textRenderer.draw(matrixStack, Text.literal(String.valueOf(dynamicCount)), 5, 10, 0xFFFFFF);
// 直接渲染可变文本对象
client.textRenderer.draw(matrixStack, dynamicText, 5, 10, 0xFFFFFF);

注意:颜色值建议用十六进制(如0xFFFFFF为白色),原代码中的1会显示近乎黑色的文本,辨识度极低。

  1. 修改变量实现更新
    在需要触发文本更新的逻辑中(比如按键事件、游戏状态变化、定时回调)修改变量即可:
// 示例:按下UP键时更新数值与文本
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
    dynamicCount++;
    dynamicText = Text.literal("当前计数:" + dynamicCount);
}

常见问题排查

  • 若变量修改后文本未更新,检查:
    • 渲染方法是否每帧都被调用(需确保注册了正确的客户端渲染事件,比如RenderGameOverlayEvent)
    • 变量是否为类成员变量(局部变量会在每帧渲染时被重置)
    • 变量修改操作是否在客户端线程执行(Minecraft渲染逻辑必须在客户端线程处理)

内容的提问来源于stack exchange,提问作者future

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:31:19