【Unity】InputFieldの落とし穴【uGUI】
InputFieldの落とし穴
InputFieldから、数値だけを取得しようとして躓いたことを紹介。
Unityバージョン:Unity 2018.3.13f1
入力された数値を取得する
順序:
①InputFieldをHierarchyに生成
②InspectorからContent TypeをInteger Numberへ変更
③textの文字列を数値へ変換
Content TypeをInteger Numberへ変更した事で、数値以外の入力を制限できます。
数値以外の入力を制限したとはいえ、textから取得できるのは文字列なので、Convert.ToInt32を使用して数値に変換します。
※using Systemを忘れずに!
さぁ、これで完璧だ!
と思ったんですけどね……。
バックスペースでエラー
バックスペースでInputFieldの数値を全て消そうとすると……。
FormatException: Input string was not in a correct format.
というエラーが!
Content TypeがInteger Numberなのにそれ以外が入ってしまっているみたいですね。
対処法
変換前にチェックの処理挟んで解決しました。
文字コードとかで判定しようかと思ったんですが、textからさらに取得して判定して……の流れが面倒だったのでこの形にしました。
もっとスマートなやり方があったら教えてくださいm(__)m