将表情符号正确添加到游戏中



我们正在尝试使用表情符号One添加表情符号,并与TextMeshpro统一。我们有一个窗口打开的窗口,显示所有表情符号,然后用户可以选择所需的窗口,我们遇到了删除它们并在其之后键入文本的问题。

这是我们拥有的代码,Sprite的名称是:1f609,但是运行代码并将其添加到输入字段时的输出是:ud83dude09

string name = _image.sprite.name;
int hexNumber = int.Parse(name, System.Globalization.NumberStyles.HexNumber);
string c = char.ConvertFromUtf32(hexNumber);
_inputField.text += c;

预期的结果是,我们应该只看到一个Unicode字符(我认为),以便我们可以使用backspace键正确删除表情符号,而当您输入表情符号时,它不会创建两个字符要删除,并且不会删除它将字符放在两个表情符号斑点之间,因此当我们输入文本时,它会破裂。

现在,如果我们删除文本,它将给我们留下空心的正方形,如果以后通过在盒子中键入键入文本,它将在两个打破它们的字符中拆分字符。

c#world中的unicode表示UTF-16,因此您现在必须处理这些"替代对"。一种解决方案是检测是否仅删除了替代对的一半,在这种情况下也删除了另一半。代理对的前半段始终处于[D800H,DBFFH]的范围内,下半部分始终处于[DC00H,DFFFH]的范围内,因此,当您在其中一个范围内删除char时,您知道您应该再删除一个char,并且您还知道该字符在哪里(刚刚删除之前或之后)。

最新更新