はじめに
この記事はアスペクト対応という概念に悩む筆者がオイオイ泣きながらアスペクト比対応ためにいろいろ試した備忘録です。
参考程度にお読みください。
環境
UE5
Windows
参考
スケールボックスとキャンバスパネル
アスペクト対応において、主にこの2つをすごく駆使することになります。
スケールボックス

スケールボックスは多くの子とか書いてあるくせに、一個しか子を持つことができないので、主に「キャンバスパネルでレイアウトを作り、後付けでスケールボックスの子にする」という使い方になります。
後付けで子にする/階層を吸収させる
ラップ
階層から子にしたいウェジットを選択し、…でラップするから選んだUIで子にしたいUIをラップ(子にする)ことができます

置換
置換では特定のパネル類に選択したUIを置き換えることができます。

また、子で置換を選ぶことで、そのパネルの下の階層の子と置換することもできます

ストレッチの種類
スケールボックスの子になっているウェジットのストレッチにはいくつか設定項目があります

キャンバスパネルと中央にアンカーされたテキストを作成し、これをラップした場合の例を見ます。※Stretch DirectionはBoth

子のCanvasPanelのAlignmentはどちらも中央揃えです

None
説明:コンテンツをスケーリングしません
Fill
説明:領域のスペース全体が埋まるようにコンテンツを不均等にスケーリングします
スケールボックスの子になっているUIの領域を全体まで拡張します
キャンバスパネルだとほとんど問題は起きませんが、テキストボックスなどが子になっている場合、スケールボックスの範囲=テキストの範囲(サイズ)となるので、場合によっては位置ずれなどが起きる可能性があります

↓テキストボックスを直接スケールボックスの子にした場合
テキストは基本上揃えなので寄ってしまっている

Scale to Fit
説明:クリップしなければスケーリングできなくなるまでコンテンツを均等に(アスペクト比を維持して)スケーリングします
つまりスケーリングできるもの(CanvasPanelなど)は限界まで圧縮し、サイズが設定されているものはXかYが端にあたるまで拡大するです

このサイズの定義は、アンカーポイントやAlignmentが大きく関わっています。


アンカーポイントやAlignmentを変更することで、保ちたい領域を調整することができます。


Scale to Fit X
説明:X軸に沿ってクリップしなければスケーリングできなくなるまでコンテンツを均等に(アスペクト比を維持して)スケーリングします。Y軸はクリップ可能であり、クリップされます。
Scale to Fit Y
説明:Y軸に沿ってクリップしなければスケーリングできなくなるまでコンテンツを均等に(アスペクト比を維持して)スケーリングします。X軸はクリップ可能であり、クリップされます。
Scale to Fill
説明:すべての面が領域のサイズを満たすか、または超えるまで、コンテンツを均等に(アスペクト比を維持して)スケーリングします。この場合、長い方の面がクリップされます。
XとYを見たとき、短い方を基準に限界まで敷き詰めるよってことです。

Scale by Safe Zone
説明:現在ビューポートに適用されているセーフゾーンのサイズに応じてコンテンツをスケーリングします
モバイルとかで触れない場所があるときにそれに合わせてスケーリングしてくれるらしいやつです

右上の画面サイズから確認できます
User Specified
説明:ユーザーが指定したスケールでコンテンツをスケーリングします。

これを選択すると、User Specified Scaleという項目が表示されます
変更することでスケールを変更することができます
Render Transformとの使い分けは
「見た目を変えたいだけならRender Tansfrom」
「物理的にUIサイズを上げたいならUser Specified Scale」
だそう(Developer Assistant曰く)
User Specified with Clipping
説明:ユーザーが指定したスケールでコンテンツをスケーリングをしてクリッピングも行います。
User Specifiedにクリッピング機能が付いたやつ
↓ User Specified with Clipping

Stretch Direction
Both
スケールアップもスケールダウンも可
↓Scale to Fit X時。現状はスケールアップされています

Dowb Only
スケールダウンのみ可
↓Scale to Fit X時。スケールアップできないので元のサイズのままです

Up Only
スケールアップのみ可
↓Scale to Fit X時。スケールアップは可なので限界まで大きくなります

Ignore Inherited Scale
説明:継承するスケールを無視するオプションのBool値。ローカルスケーリングを適用する前に、親の影響を相殺するために反転したスケーリングを適用します。
適用するとこんな感じでテキストがとんでもないサイズになったりとかします

主にUser Specifiedと併用して絶対に固定値にしたいものとかに使うらしいです
まあ結局ほとんどFillとScale to Fit系しかお世話にならないんですけどね
次回「アンカーポイント編」 デュエルスタンバイッ

















