【问题标题】:LibGdx How to program an HP Bar?LibGdx 如何对 HP Bar 进行编程?
【发布时间】:2014-02-19 21:21:38
【问题描述】:

我目前正在尝试使用 LibGdx 编写游戏。我有很多游戏的结构部分,我现在正在寻求让游戏返回信息给玩家。我能想到的最简单的 UI 概念是 HP 条和弹药计数器(用于子弹、箭头等)。这会通过我的 GameScreen 课程中的舞台和演员来完成吗?也许在渲染类?或者这是第二个摄像头(在后台加载)?

我使用 Map 和 MapRenderer 类支持的 GameScreen 类来实现我的显示。

我将寻找分解 LibGdx 测试。任何能让我站起来的信息都会很好!

【问题讨论】:

    标签: java user-interface libgdx


    【解决方案1】:

    我前段时间使用过这段代码(暂时未经测试)。它只使用了两个在彼此之上绘制的九块。您可以使用 libgdx 的默认皮肤(来自测试资源的 uiskin)。

    public class HealthBar extends Actor {
    
        private NinePatchDrawable loadingBarBackground;
    
        private NinePatchDrawable loadingBar;
    
        public HealthBar() {
            TextureAtlas skinAtlas = new TextureAtlas(Gdx.files.internal("data/uiskin.atlas"));
            NinePatch loadingBarBackgroundPatch = new NinePatch(skinAtlas.findRegion("default-round"), 5, 5, 4, 4);
            NinePatch loadingBarPatch = new NinePatch(skinAtlas.findRegion("default-round-down"), 5, 5, 4, 4);
            loadingBar = new NinePatchDrawable(loadingBarPatch);
            loadingBarBackground = new NinePatchDrawable(loadingBarBackgroundPatch);
        }
    
        @Override
        public void draw(Batch batch, float parentAlpha) {
            float progress = 0.4f;
    
            loadingBarBackground.draw(batch, getX(), getY(), getWidth() * getScaleX(), getHeight() * getScaleY());
            loadingBar.draw(batch, getX(), getY(), progress * getWidth() * getScaleX(), getHeight() * getScaleY());
        }
    }
    

    请记住,您应该使用 AssetManager 来检索图集纹理,而不是像这样创建新的图集。

    【讨论】:

    • 谢谢!我放置了代码(有效)并将其放入我的程序中。一切似乎都运行良好。
    • 投反对票。在每个 Draw 中创建一个新的纹理图集是一种不好的方法。甚至在每个抽签周期中创建 4 个九块。
    • @BennX 好评论我相应地更改了代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2014-10-26
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多