在 libGDX 中刷新 HUD

Refresh hud in libGDX

我的显示器是这样的。中间的图片应该显示玩家当前的武器。我用以下代码添加了图像:

table.add(weaponImage).width(weaponWidth).height(weaponHeight);

在我的 HUD 中,我创建了一个名为“updateWeapon”的方法来更改图像,但是没有用。

public void changeSword(String swordName) {
        weaponImage = new Image(new Texture(Gdx.files.internal(swordName)));
        System.out.println("Weapon changed");
    }

控制台打印出“Weapon changed”,但图像没有变化。 我想那是因为 hud 没有刷新,我该怎么做?

您正在更改已分配引用(或指针,如果您愿意)的引用。

说原来的weaponImage在0x1地址。 table 被指示显示 0x1 处的任何内容。现在稍后您将 weaponImage 指针更改为 0x5 处的新图像,但 table 取了第一个值。

要更新图像,您需要使用原始 0x1 地址并在那里切换图像。

改变

weaponImage = new Image(new Texture(Gdx.files.internal(swordName)));

weaponImage.setDrawable(new TextureRegionDrawable(new Texture(Gdx.files.internal(swordName)));

但是首先抓住那个纹理你不想每次都做一个new