【Unity】uGUIでスクロール可能なテキストボックスを作る  その2

前回の記事の続き(というか加筆修正)です。

細かい調整を少しだけします。

マウスホイールでのスクロール量を調整する

前回のプロジェクトを作成した方ならお気づきの通り、マウスホイールでスクロールさせてもほんの少ししかスクロールしません。
HierarchyウィンドウのMaskオブジェクトを選択し、Scroll RectコンポーネントのScroll Sensitivityを15に設定してください。
ゲームを実行すると、スクロール量が増えていることがわかると思います。
参考URL:https://docs.unity3d.com/jp/540/Manual/script-ScrollRect.html

文字の位置を調整する

前回の記事でも書いたように、スクロールバーと連携しているせいか、文字量によってはテキストの位置に違和感が出てしまいます。
そこで今回は文字の位置を調整するプログラムを書いてみました。

注*軽く探しても見つからなかったのでスクリプトを自作しましたが、もっとスマートなやり方がUnityにはあるかもしれません。

フルファイル:
https://github.com/Tsumio/unity-sample-maskbox/archive/v1.0.2.zip
追加ファイルのみ:
https://github.com/Tsumio/unity-sample-maskbox/blob/master/Scripts/AdjustHeight.cs

AdjustHeight.csをプロジェクトにインポートしたあと、MainTextオブジェクトにコンポーネントとして追加してください。
このとき、Content Size FitterをRemove Componentしておきましょう。

ゲームを実行してください。
文字量にかぎらず、常に文字はウィンドウ画像の左上から始まります。
また、文字量に応じて自動で文字のサイズが変更されます(試しにHeightを0にして実行してみるとわかりやすいかもしれません)。

スクリプトの内容

まず、テキストの量に合わせてHeightを調整します。
このとき、あらかじめ設定されているテキストの最小Heightと現在のHeightを比較し、Heightが最小Height未満ならHeightに最小Heightを設定します。
あとはScrollbarのvalueを1.0(一番上)にしているだけです。
ごく簡単なスクリプトですね。

問題点

このスクリプトの問題点は、ゲームを実行するまでどのような実際のゲーム画面ではどのような表示になっているのかがわからないことに尽きるでしょう。
Content Size Fitterがリアルタイムに設定を反映させていたので、そのようにプログラムを組みたかったのですが、どこで反映させるのかいまいちわからず断念しました。
恐らくUnityのエディタ拡張と関係があるとは思うのですが……。
また、そもそもこんなことスクリプトを作らなくても、スマートにテキストの位置調整をする方法があるやもしれません。

終わりに

ごく簡単な修正だけでしたが、いかがでしたでしょうか。
僕はUnityにはまりそうですw

フォローする