InputFieldから絵文字を除く方法
はじめに
InputField内に絵文字があると自動で取り除くスクリプトを作成しました。
絵文字とありますが、厳密にはサロゲート文字か判定してるだけなので全ての絵文字に対応してるわけではありません。
副次的に漢字の異字体等、他のサロゲートペアを使ったものにも対応してたりします。
スクリプト
using UnityEngine; using UnityEngine.UI; public class InputFieldController : MonoBehaviour { [SerializeField] private InputField inputField = null; void Start() { inputField.onValueChanged.AddListener(delegate { OnValueChange(inputField); }); } private void Reset() { inputField = GetComponent<InputField>(); } private void OnValueChange(InputField inputField) { string str = string.Empty; foreach (var c in inputField.text) { if (!char.IsSurrogate(c)) { str += c; } } inputField.text = str; } }
使い方
上記をコピペcsファイルを作ってオブジェクトにアタッチするだけです。後はReset()が勝手にやってくれます。
後からInputFieldをアタッチした場合は歯車(設定)からResetを押すか手動でアタッチします。