見出し画像

[Unity]InputFieldのキャレット(入力中に点滅するバー)が表示されない時に行った対処


状況

  • InputFieldを使用した際、キャレットが表示されませんでした。

↑領域内をクリックしても、キャレットが表示されない

原因

  • どうやら、キャレットの横幅が小さすぎて、「存在しているのに描画できていない」みたいな状態になっているようです。

  • シーンビューで見ると、確かに存在していることが確認できました。


↑細すぎて点線になってしまっているキャレット

対処1:Caret Widthを変更してみる

  • InputFieldをInspectorで確認すると、Caret Widthという項目があります。この数値を上げることで、キャレットが太くなり、見えるようになる可能性があるようです。

  • CaretWidthは初期値が1で、5までしか上げることができません。私の場合、5まであげても見えなくなることがありました。

対処2:Caret Widthの上限を変更してみる

  • 「Maxまで太くしても見えないなら、上限を上げてしまえ!」ということで、InputFieldの中身を直接書き換えてみました(Unityの標準ライブラリを書き換えるのはあんまり良くない気がしますが…)

  • InspectorからInputFieldをEdit Scriptしてコードを表示します。290行目付近に、


        [SerializeField]
        [Range(1, 5)]
        private int m_CaretWidth = 1;

このような箇所を発見しました。Rangeを(1,20)などと書き換えると、Inspectorから設定できる上限値も上がりました。

さいごに

  • 力技ですが、なんとかキャレットを表示することができました。

  • 私は趣味&個人開発なので問題ありませんが、もし真似しようとする方がいらっしゃれば自己責任でお願いします。

  • こんなことする前にUIの大きさとか見直せ?その通りだと思います。



いいなと思ったら応援しよう!