三流豆腐。

三流のゲームプログラマ。C/C++/C#/Objective-C/python/技術向上を目指します。

【Unity】InputFieldの落とし穴【uGUI】

InputFieldの落とし穴

f:id:tofu_doon:20190424004845p:plain

InputFieldから、数値だけを取得しようとして躓いたことを紹介。

Unityバージョン:Unity 2018.3.13f1

 

入力された数値を取得する

順序:

①InputFieldをHierarchyに生成

②InspectorからContent TypeをInteger Numberへ変更

③textの文字列を数値へ変換

 

Content TypeをInteger Numberへ変更した事で、数値以外の入力を制限できます。

f:id:tofu_doon:20190424005500p:plain

 

 

数値以外の入力を制限したとはいえ、textから取得できるのは文字列なので、Convert.ToInt32を使用して数値に変換します。

※using Systemを忘れずに!

f:id:tofu_doon:20190424005512p:plain


さぁ、これで完璧だ!

と思ったんですけどね……。

 

バックスペースでエラー

バックスペースでInputFieldの数値を全て消そうとすると……。

f:id:tofu_doon:20190424004713p:plain

FormatException: Input string was not in a correct format.

というエラーが!

Content TypeがInteger Numberなのにそれ以外が入ってしまっているみたいですね。

 

対処法

変換前にチェックの処理挟んで解決しました。

f:id:tofu_doon:20190424010221p:plain

文字コードとかで判定しようかと思ったんですが、textからさらに取得して判定して……の流れが面倒だったのでこの形にしました。

もっとスマートなやり方があったら教えてくださいm(__)m