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,但修复它很容易,所以它支持。如果您遇到了这个问题,请告诉我。
好的,我有一个启用了标记的位图字体。问题是,我需要为整个文本字符串设置全局 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,但修复它很容易,所以它支持。如果您遇到了这个问题,请告诉我。