iOS
絵文字
emoji
Unity
記号

Unityで作ったiOSアプリで'○'や'△'といった記号が入力できないのをなんとかする

More than 1 year has passed since last update.


概要

Unityから出力したiOSアプリで、'○'や'△'といった一部記号や、どうも絵文字も入力できない。

これをなんとかしたい。


試したバージョン

Unity 5.3.4f1, Unity 5.3.5f1(執筆時の最新版)


'○'や'△'を入力できるようにする

Unityから出力したXCode Projectのコード UI/Keyboard.mmstringContainsEmoji を常に NO を返すようにする。

bool stringContainsEmoji(NSString *string)

{
return NO;

【追記】

UI/Keyboard.mm

#define FILTER_EMOJIS_IOS_KEYBOARD 1

のところを

#define FILTER_EMOJIS_IOS_KEYBOARD 0

にしても上記と同じ効果を得られる模様。

(Unity 5.3.4p1から可能)


どういうこと?

stringContainsEmoji をコールしているところのコメントによると

We need to do this because Unity's UI doesn't provide proper Unicode support yet.

(意訳:UnityのUIはまだちゃんとUnicodeサポートしてないんで絵文字いれられないようにするよ)

とのこと。

UnityのUIが絵文字をサポートしていないのでキーボードから絵文字を入力させないようにしているらしい。

'○'や'△'は絵文字ではないのだけれど、stringContainsEmoji の(多分雑な)実装のあおりを食らって入力ができなくなっているようだ。

stringContainsEmoji で常にNOを返すようにし、'○'や'△'を入力してみると、'○'や'△'といった文字列はちゃんと表示される。


絵文字をいれるとどうなるの?

こうなる。

emoji_unity_ios.PNG

stringContainsEmoji を編集し絵文字をいれられるようにしています)

見事にサポートしていない感じですね。


もうちょっとちゃんと'○'や'△'を入力できるようにする

stringContainsEmoji でつねにNOを返すようにすると、'○'や'△'が入力できるかわりに絵文字を入力できてしまいマズい。

なので stringContainsEmojiGeometric_Shapes(U+25A0-U+25FF)あたりの場合にはNOを返すような実装に変更すれば絵文字は入力できないが、'○'や'△'といった記号は入力できるようになる。


最後に

stringContainsEmoji 関数も実装が雑なのか、一部文字列は入力できてしまったりします…。