LibGDX BitmapFont 标记 Alpha 值

LibGDX BitmapFont Markup Alpha Value

好的,我有一个启用了标记的位图字体。问题是,我需要为整个文本字符串设置全局 alpha 值,而不需要为每个颜色代码设置单独的 alpha 值。

例如,我有...

[#0000ff]这是蓝色的,[#990000]这是红色的

我希望通过设置 alpha 值使字体文本淡入背景。有什么方法可以在不手动解析颜色代码并将 alpha 值粘贴到括号中的情况下执行此操作?

我也尝试过使用 Colors.put(..) 添加自定义颜色,但这真的很笨拙,因为我必须为我使用的每种颜色设置 alpha 值,以及我正在使用的每一行文本绘图.

您需要使用 BitmapFontCache class。

例如,假设您的代码当前如下所示...

    font.drawWrapped(batch, text, x, y, wrapWidth, alignment);

将其替换为以下内容,您可以按照需要的方式控制 alpha...

    BitmapFontCache cache = font.getCache();
    cache.clear();
    TextBounds bounds = cache.addMultiLineText(text, x, y, wrapWidth, alignment);

    // This is the useful bit!
    cache.setAlphas(alphaTransparency); 

    cache.draw(batch);

注意 - 如果您使用的是距离场字体,那么大多数人为它们使用的着色器不支持 alpha,但修复它很容易,所以它支持。如果您遇到了这个问题,请告诉我。