【问题标题】:Setting fontColor for ImageTextButton works in one screen but not on another - LIBGDX Scene2D为 ImageTextButton 设置 fontColor 在一个屏幕上有效,但在另一个屏幕上无效 - LIBGDX Scene2D
【发布时间】:2015-05-10 11:42:04
【问题描述】:

我有两个 ImageTextbuttons,这是我在 MainMenu 屏幕和游戏屏幕中设置它们的方式:

    ImageTextButton.ImageTextButtonStyle ibs = new ImageTextButton.ImageTextButtonStyle();
    ibs.font = skin.getFont("scorescombo3-font160");
    ibs.fontColor = new Color(1.0f, 0.6f, 0.0f, 0.65f);
    ibs.up = new TextureRegionDrawable(skin.getRegion("level_name"));
    level_no_button = new ImageTextButton("button", ibs);

我使用从 Hiero 导出的相同字体文件。

在我的游戏屏幕中,我看到的文本是应该看到的橙色,但在我的MainMenu屏幕中它仍然是白色,即使 Alpha 渲染正确。

我已经在我的代码中搜索了所有 level_no_button 颜色设置,并且没有将颜色设置为白色的行。为什么颜色设置在一个屏幕上起作用而在另一个屏幕上不起作用?更重要的是,为什么 alpha 有效但颜色无效?

【问题讨论】:

  • 如果我记得 ImageTextButton 在其类中有标签。尝试更改标签颜色而不是 ImageTextButton 颜色。
  • 嗨!我得到相同的结果:即使 Alpha 被相应地渲染,也只有白色。这可能是因为其中一个 ImageTextButtons 添加在一组不同的堆栈和表中,而不是另一个,这可能会破坏 Scene2D 通常执行的一些更新逻辑。不知道要调用什么更新函数来刷新这些东西。

标签: java libgdx shader fragment-shader


【解决方案1】:

显然是另一个屏幕中的着色器将字体绘制为白色。

我变了:

  vec4 texColor  = texture2D(u_texture, v_texCoord);

到: 变化 vec4 v_color; ...

  vec4 texColor  = texture2D(u_texture, v_texCoord) * v_color;

这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    相关资源
    最近更新 更多