【问题标题】:How to draw an information panel in libgdx scene2d ui如何在 libgdx scene2d ui 中绘制信息面板
【发布时间】:2014-01-22 13:44:37
【问题描述】:

在我的 libgdx 游戏中,想要绘制一个信息面板,其中显示我当前的健康状况等。我见过this question,它显示了类似的内容,但我的面板不需要对用户输入做出反应,它应该只显示信息。这就是为什么我不想在我的游戏屏幕上添加第二个阶段。但我需要确保它被画在其他一切之前。我该如何管理?我认为 z-Index 不起作用,因为当我的角色拍摄时,它会在舞台上添加一个“子弹”演员,而这个演员会在最后一个索引处,对吗? “暂停菜单”也是如此,但为此我真的可以使用第二阶段。或者暂停菜单也有更好的解决方案?

编辑: 重写 stage.draw() 方法是个好主意吗?我可以先调用 super.draw() 然后绘制我的信息面板。所以它总是在前面。还是我不应该覆盖 stage.draw()?

【问题讨论】:

    标签: java libgdx scene2d


    【解决方案1】:

    最好的办法是有 2 个阶段。

    如果您不希望它对用户输入交互做出反应,您唯一需要做的就是不要将第二阶段设置为输入处理器。

    覆盖 stage.draw() 显然会起作用,但它会使其难以维护。 此外,这将是一个不受欢迎的设计选择,因为您的游戏功能是在阶段的子类中描述的(它应该是一个演员(在理想世界中:D))

    希望这会有所帮助。

    【讨论】:

    • 只有一个 gmae 的舞台和一个暂停菜单的舞台不是更容易吗?如果我覆盖 stage.draw(),我可以在演员被绘制后轻松绘制信息面板,并且因为我在同一个班级中,我可以访问玩家和他的信息,而不会抛出参考。如果我错了,请纠正我!
    • 这对于您当前的用例来说可能很容易,但它会成为可扩展性的障碍(它与设计有关)。如果您以后想在信息面板中添加一些功能,维护可能会成为一场噩梦。 :) 如果你确定这是你的限制(对于信息面板),那就去吧。
    【解决方案2】:

    重写 stage.draw() 方法是个好主意吗?我可以先调用 super.draw() 然后绘制我的信息面板。所以它总是在前面。还是我不应该覆盖 stage.draw()?

    如果您真的希望所有人都处于一个阶段。 (我真的不认为使用 2 个阶段会使设计更容易)。好的。不要犹豫重写 Stage.draw();

    【讨论】:

    • 为菜单设置一个舞台会更好吗?还有那个面板?但是很难获得所有信息,因为它们存储在另一个阶段......
    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 2013-03-26
    • 2013-09-08
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    相关资源
    最近更新 更多