버전 Unity 2018.3
Nick Name이나 채팅에서 유저가 Emoji를 선택 하면 삭제 또는 막는법을 설명한다.
[Android]
android는 입력된 Emoji 찾아 삭제하면 된다.
#if UNITY_ANDROID
mLabel = Regex.Replace(inputName.text, "[\uD83C-\uDBFF\uDC00-\uDFFF\u1F30-\u1F5F]+", "").Trim(); // Emoji 삭제 , Trim
#endif
[IOS]
ios는 문자를 바꿀수 없어서 Emoji를 막는 방법은 3가지를 소개한다.
유저가 Emoji눌러도 InputField에는 입력이 들어오지 않게 하는 방법으로
개인적으로는 소스코드 보다 info.list를 수정하는 방법을 추천한다.
코드 수정시 빌드때마다 수정해 주어야한다.
1. Unity IOS 빌드 후 XCode Project에 UI/KEyboard.mm 파일을 찾아서
stringContainsEmoji() 함수의 return값을 항상 NO 처리 하면된다.
static bool stringContainsEmoji(NSString *string)
{
return NO;
}
2. Unity IOS 빌드 후 XCode Project에 UI/KEyboard.mm 파일의 상위 define 을 1로 수정
#define FILTER_EMOJIS_IOS_KEYBOARD 1 // Disable
Info.list파일에 아래 필더를 등록하여 define을 바꾸어 준다.
buildSettings / PreprocessorMacros
FILTER_EMOJIS_IOS_KEYBOARD=1
Unity 에서 Info.list파일을 생성해주는 에셋 및 방법은 많다
무료에셋으로 egoxproject를 사용하면 쉽게 추가할 수 있다.