2017-12-07 11 views
1

Emoji OneとUnityをTextMeshProで使用してemojisゲームを追加しようとしています。すべての絵文字を表示したウィンドウが開き、ユーザーが希望の絵文字を選択できるようになり、削除や文字の入力に問題が発生しました。ここでemojisをゲームに正しく追加する

は、我々が持っているコードで、スプライトの名前はこれです:1f609、しかし私たちは、コードを実行し、入力フィールドに追加し、出力がこれです:\ud83d\ude09

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

期待結果は、私たちがバックスペースキーで絵文字を正しく削除できるように、ただ一つのユニコード文字だけを見るべきだということです。絵文字を入力すると、削除される2つの文字は作成されず、 2つの絵文字スポットので、テキストを入力するとそれは壊れます。

今すぐテキストを削除すると空の四角が残ってしまいます。後でテキストを入力すると、ボックスに入力することで2つの文字を分割して分割します。

答えて

1

C#でのUnicodeはUTF-16を意味するので、ここで対処しなければならない "サロゲートペア"があります。 1つの解決策は、サロゲートペアの半分を削除した場合にそれを検出し、その場合には他の半分も削除することです。サロゲートペアの前半は常に[D800h、DBFFh]の範囲にあり、後半は常に[DC00h、DFFFh]の範囲にあるため、これらの範囲のいずれかでcharを削除すると、もう1つのcharを削除する必要があることがわかります。その文字がどこにあるのか(削除されたものの前か後)もわかります。

+0

ありがとうございます。これが役立つかどうかがわかります。 – Baraphor

関連する問題