2017-12-07 19 views
1

Emoji One과 Unity를 TextMeshPro와 함께 사용하여 emojis 게임을 추가하려고합니다. 모든 이모티콘을 보여주는 창이 열리고 사용자가 원하는 그림을 선택할 수 있으며, 삭제 후 텍스트를 입력하는 문제가 발생합니다. 여기 emojis를 게임에 올바르게 추가하기

은 우리가 가지고있는 코드, 스프라이트의 이름은 이것이다 : \ud83d\ude09

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

예상 : 우리는 코드를 실행하고 입력 필드에 추가 할 때, 그러나 출력 1f609 것은 이것이다 결과는 백 스페이스 키로 이모티콘을 올바르게 삭제할 수 있도록 단 하나의 유니 코드 문자 만보아야한다는 것입니다. 이모티콘을 입력하면 삭제 될 두 개의 문자가 생성되지 않고 문자 사이에 문자가 배치되지 않습니다. 두 개의 그림 이모티콘이 있으므로 텍스트를 입력하면 끊어집니다.

지금은 텍스트를 삭제하면 빈 사각형으로 남게됩니다. 상자에 입력하여 텍스트를 추가하면 두 개의 문자로 분할됩니다.

답변

1

C#에서 유니 코드는 UTF-16을 의미하므로 사용자가 처리해야하는 "서로 게이트 쌍"이 있습니다. 한 가지 해결책은 대리자 쌍 중 절반을 제거하고 다른 절반을 제거하는 경우를 감지하는 것입니다. 서로 게이트 쌍의 전반부는 항상 [D800h, DBFFh] 범위에 있고 후반부는 항상 [DC00h, DFFFh] 범위에 있으므로이 범위 중 하나에서 char을 제거하면 더 많은 char 하나를 제거해야한다는 것을 알고 있습니다. 당신은 또한 그 문자가 어디에 있는지를 알 수있다.

+0

감사합니다. 도움이되는지 확인 드리겠습니다. – Baraphor