視線の注視時間を後から入力する③ 文字入力の表示非表示など
視線入力の時間を入れる
InputFieldなどのUIですが、
あると視線入力の邪魔になることもあるので
消せるようにしました。
参考にしたのはこちら↓
Unityでモデルを非表示にする | 生存日記 (wordpress.com)
消し方にもこんなにいろいろあるのかと勉強になりました。
このうち、
スケールを0にする
を採用いたしました。
Yキーを押すと消えるようになりました。
Yを押すと
消える。また押すと出てきます。
ところで、さっきまであったボタンですが、削除しました。
今までずっとキー入力だけでやってきたので
ここでボタンを増やすより、
出来るとこまでキーボードからの入力でやりきろうかなと。
あと、これまで長い間
音の停止は2
一時停止は1
を押すようにしてきましたが、
視線入力の時間を入れるときに
時間で1を入れたいのに流れていた音楽が
一時停止するなど不便だったので
これもキーを変えました。
停止はT
一時停止はI
です。
停止、一時停止の
ローマ字の頭文字です。
本当は
停止はstopのS
一時停止はPauseのP
が格好良かったかもと後になって思いましたが
変えてしまったのでこのままいきます。
後、同じ要領で
視線はずれを何秒まで許容するかについても
入力する枠を作りました。
できるだけ設定しないといけないところは
少なく少なくしたかったのですが、
これだけは、もしかしたらニーズが出てくるかも
と思ってInputFieldを作りました。
あと、キー入力で設定を変えるところが増えたので
説明の文章を作りました。
見にくかったので
アウトラインを
uGUIでテキストにアウトラインをつける方法 - 脳汁portal (hatenablog.com)
こちらを参考につけました。
今、お試しでいろんな入力をしていて
気付きました。
InputFieldに小数点などいくつかのキーを入れると
落ちます。
【Unity,C#】型変換のときに例外でも止めずに実行を続ける(TryParse) - はなちるのマイノート (hanachiru-blog.com)
↑こちらですぐに解決しました。
インターネット上の皆様、ありがとうございます。
if (text != "") //もしInputFieldが空でないなら
{
//後で入力したtextをfloat型の数値として使いたい
//こうすると予想外の入力にもクラッシュしない
float.TryParse(text, out num);
Debug.Log($"nummitenai: {num}");
//↓これでstringをfloatに変換すると、例えば小数点をいきなり入力すると落ちてしまった
//num = float.Parse(text);
if (num <= 0)
{
//文字表示を以下のように変える
textarea.text = "0より大きい数を入れてね";
}
else if (num > 0)
{
//文字表示を以下のように変える
textarea.text = text + "秒、見てね";
Debug.Log("数字" + num);
}
else
{
//文字表示を以下のように変える
textarea.text = "0より大きい数を入れてね";
}
}
else //もしInputFieldが空なら
{
textarea.text = "注視時間を入力してね";
}
}
こんな感じです。
Buildしてみました。
概ね良好ですが、
数字がやはりビルド後に変えた数を記憶してくれないようです。
きっと何か方法があるんだろうなあ・・・