【制作実習】Unity標準GUIで画面サイズに合わせてコンポーネントをリサイズ

現行のUnity標準のGUIを使用した場合、画面サイズの変更にあわせてコンポーネントのサイズを調整するのは自力でやらないといけない。

テキストフィールドや、ボタンコンポーネントのサイズ変更だけだと、それほど大変でもない。

問題は、テキストフィールド内の文字や、ボタンのラベルのフォントサイズだ。

今日は、そのあたりを実装してみたので、動画を張ってみました。

どういう風に実装しているかというと、まあ力技というか、とくに工夫はない。

あるフォントサイズにしたときの、ラベルやテキストのサイズを計算するやり方があったので、コンポーネントのサイズに収まる最大のサイズを超えるまでフォントをひとつずつ増やすという方法。

ロジックはこんな感じだ。


public static int GetFontSizeFromWidth(GUIStyle style, GUIContent contents, float width) {
int size = 0;
for (int i = 1; ; i++) {
style.fontSize = i;
Vector2 v = style.CalcSize(contents);
if (v.x < width) { size = i; } else { break; } } return size; } [/csharp] GUIStyleは自分でnewすればよい、GUISkinからも取得できそうだが試していない。 GUIContentも、サイズを調べたい文字列を引数にコンストラクタを呼んでnewすればよい。 とはいえ、Unity標準のGUIは極力使用しないようにしている。 当該の画面は、テキストフィールドが必要なため、ソフトウェアキーボードを自作するのも大変なので妥協した。 Unityの新しいGUIに期待したいところである。 ちなみに、動画の後半に出るダイアログや確認ウィンドウは、GUIではなくゲームオブジェクトを使っているので、サイズについては気にしなくて良いようになっている。

4年前

コメントを残す

メールアドレスが公開されることはありません。