这几天要实现多语言的支持。
游戏不大,所以不想释放资源打断游戏再重新进入游戏。
于是尝试着每个有文本的界面都写个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;