ティラノビルダーの入力で数値だけ入力してほしい場合の処理
ティラノビルダーの入力コンポーネントで数値だけを入力してもらってなにかに使いたいときの処理です。
数値を入力してほしいから入力コンポーネントをいれたけど、入力された値が数値として扱われないよ~😫とか文字列も入力できちゃって困る~😫というときのための覚え書き。
まず、ティラノビルダーでは入力はすべて文字列扱いになってしまうため数値に変換する必要があります。(2025年1月時点)
①文字列を数値に変換し、それが数値かNaN(Not a number)か判定する
②数値以外を数値に変換するとNaNが返ってくるのでNaNかどうかを判定→falseなら数値
[iscript]
f.numInput = Number(f.入力変数); //入力された値を数値に変換
f.judgeString = isNaN(f.numInput); //数値以外が入力された場合trueが返ってくる
[endscript]numInputは入力コンポーネントで設定している変数です。
追記:
Numberで数値変換したあとisNaNで値がNaNかどうか判定をしていますが、Number.isNaN()を使用したほうがよいかもしれません
Number.isNaN()メソッドは、厳密にNaNであり、かつNumber型である場合に限りtrueを返します。
(引用元)https://zenn.dev/torakm/articles/0013b7f5f2329c
そしてティラノスクリプトコンポーネントを作成(JSで書き換えられるなら↑のiscript内に書いてもいい)
NaNかどうかの判定がtrueなら数値以外が入力されたときの処理、falseなら数値だったときの処理
[if exp="f.judgeString == true"]
//数値以外だったときの処理(「数値を入力してね」とテキスト表示して入力前のラベルへ飛ばすなど)
[else]
//数値だったときの処理
[endif]なにか理由があってティラノスクリプトとiscriptを分離してるんだと思うんですが、理由は忘れました。その場その場で書きやすいやり方を使ってしまっているのもあって混在しています。すみません…
もっと行数を減らして書くなら、判定を変数に格納せずif分岐の中でNumber.isNaN()の判定をしたほうがいいかも。
その書き方であれば、判定用のjudgeStringという変数が不要になります。
結局自分のゲームでは使用しなかったのですが、いつか誰かの役に立つことを願って。
次回作るときにはすべてを忘れていそうな自分へ捧ぐ…