一个已经生成的label,动态修改文本字体

这几天要实现多语言的支持。
游戏不大,所以不想释放资源打断游戏再重新进入游戏。
于是尝试着每个有文本的界面都写个refresh接口,重新刷新下label的字体跟文本就好了。
我们的UI都是使用studio 1.6编辑的。动态修改字体,就不需要重新对位置啊大小啊什么的。
在编辑的时候中英文效果可以预先看到,确认使用合适的中英文字体。

如果是中文,使用系统默认字体(这是在Windows下测试的,所以把android的默认字体包导了进来,用于测试)
local tmpCfg1 = { fontFilePath = “res/ui/ui/ttf/DroidSansFallback.ttf”, fontSize = 26, glyphs = “CUSTOM” }
registerButtonText:setTTFConfig(tmp)
registerButtonText:setString(“注册”)

如果是英文,使用自定义字体(为了美观)
local tmpCfg2 = { fontFilePath = “res/ui/ui/ttf/MyEnglishFont.ttf”, fontSize = 26, glyphs = “CUSTOM” }
registerButtonText:setTTFConfig(tmp)
registerButtonText:setString(“Register”)

setTTFConfig的参数是个table,可以去浏览以下接口跟结构体,明白table要填什么:
这个接口取传入的table值:luaval_to_ttfconfig
这个是C++里面使用的结构体,一般使用前面三个参数即可:
typedef struct _ttfConfig
{
std::string fontFilePath;
int fontSize;
GlyphCollection glyphs;
const char *customGlyphs;
bool distanceFieldEnabled;
int outlineSize;
}TTFConfig;

1赞

支持!谢谢楼主的分享!

谢谢分享,正说来找找这个

感谢楼主分享,mark下 :7:

:2: :2: :2: :2:

之前做多语言我记得是在游戏开始或者游戏内部选择语言的时候 去存储当前的语言字体路径。根据路径去使用啥的= =:14::14::14::14::14:

有用,谢谢!!

mark 感谢楼主分享!