本文是对Github上关于Unity使用Emoji的说明和完善。https://github.com/mcraiha/Unity-UI-emoji
式例代码很简单,只要使用以下代码,修改emoji引用内容就能跑起来。
string content = "bicyclist: \U0001F6B4, and US flag: \U0001F1FA\U0001F1F8";
StartCoroutine(this.SetUITextThatHasEmoji(this.bicycleAndUSFlagText, content));
emoji的引用代码是"\U000+其素材对应名称"。如果有连接符"-",如澳洲国旗1f1e6-1f1e8,就要写成/U0001f1e6/U0001f1e8,并且中间不能有空格。
但是问题来了,这里的Emoji代码都是写死在脚本里的,如何在runtime中动态插入string,并把string转成emoji引用码呢?
通常我处理转义字符如"\n","\r"等,可以使用string.Replace("\\n","\n")这样的方法,但是emoji码里的"\U"并不是真正的转义字符。所以我们要使用代码将其转Unicode码。
string DecodeUTF16(string text)
{
return Regex.Replace(
text,
@"\\U(?<Value>[a-zA-Z0-9]{8})",
m => char.ConvertFromUtf32(int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)));
}
转好后就可以这样使用了。
StartCoroutine(this.SetUITextThatHasEmoji(this.bicycleAndUSFlagText, DecodeUTF16(content)));