5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unreal Engine (UE)Advent Calendar 2022

Day 7

スマホ向けゲームのWidgetについて

Last updated at Posted at 2022-12-06

この記事はUnreal Engine (UE) Advent Calendar 2022 カレンダーその3の7日目の記事です。
Qiita初投稿になります。何か間違いなどあればご指摘いただけると大変ありがたいです。

スマホ向けのゲームを作る際にWidgetで困ったこと、という題ですが、要は縦横比(アスペクト比)やウィンドウサイズが変わる環境でのWidget入門です。
最初にDPI Scaleについての説明、次に簡単な作成の紹介をします。

いろいろなウィンドウサイズの確認方法について

  • 右上のスクリーンサイズから変えたり、右下の矢印を動かして直接変更したりできます。

DPI Scaleについて

  • Unreal Engineでは、スクリーンサイズが変わったときに、自動的にWidgetをスケーリングする仕組みが入っています。
    • 上のgif動画を参照
  • ある一定の横幅からスケールが変わらなくなりました。(こんなスクリーンのデバイスはないと思いますが…)

    • 右下を見ると、DPIスケールが0.44と書かれています。


  • 右下の歯車マークからDPIScaleの設定を確認してみます。
    • デフォルトの設定では、短い辺を基準として、480の時に0.44になり、それ以上短い辺になってもDPIスケールは小さくならないようです。


  • 試しに、もっと小さくなるようにしてみます。
    • 小さくなりました。
  • このように、スクリーンサイズに応じて自動的にWidgetをスケーリングする仕組みが入っています。
  • が、あくまでも均等にスケーリングするだけなので、スクリーン全体のアスペクト比が変わったときに見切れてしまったりします。

アスペクト比の変更に対応する作例

こんなのが作りたいとします
image.png

何も考えずに作る

  • Canvasを使って作ってみましょう。
    image.png
  • 試しに画面を横にすると飛び出してしまいました
    image.png

アンカーを設定する

  • Canvasパネルでは、アンカーを設定することでウィンドウサイズやアスペクト比の変更に対応できます。
    • 例えば、一番下のやつのアンカーを左下にすると…
      image.png
    • 縦横を変えても左下にちょうど来ました。
      image.png
    • このように、ウィンドウサイズが変わっても大丈夫なようにする仕組みがアンカーです
  • ただし、アンカーを設定しても、アスペクト比が変わると、重なってしまったりします。
    image.png
  • そこで、プリセット以外のアンカー設定を利用してみます。
    • アンカーは起点となる点を指定するだけではなく、任意のサイズにすることができます。
  • サイズ変更に対応した、柔軟なものになります。
    • ただし、この場合画像のアスペクト比が変わって、画像がつぶれるようになっています。

ScaleBoxを使う

  • アスペクト比を変えないようにするためには、ScaleBoxが便利です。
    • ScaleBoxで囲むと、その子供のウィジェットを元のアスペクト比を維持するようにスケールしてくれます(ストレッチング設定によりますが。)

  • ただし、やみくもに使うとフォーマンスに影響するため、注意が必要です。

他のパネルを使う

  • 決められた間隔で並べたいときは、そもそもGridやUniformGridを使うほうが楽です。
  • 今回はUniformGridを使ってみます。
    • 本筋とは直接関係ないですが、右クリックからの「…でラップする」「…と置換」が色々と試す際にも便利です。
    • 子で置換、もあるので、ScaleBoxでラップして、やっぱりいらないか…となったときに消す等に便利です。
  • UniformGridを使えば、ScaleBoxを使うまでもなくきれいに並びます。
  • WrapBoxも使えそうですが、今回の例だとうまくいかないケースもありました。
  • ほかにも、Horizontal/VerticalBoxで並べる、Spacerで間隔を調整する、など使える手段は色々あると思います。

まとめ

  • 基準となるDPI Scaleを決める
  • Canvasを使うときはアンカーをちゃんと設定する
  • Canvas以外にも便利なパネルや機能があるので、積極的に使ってみる
  • ScaleBoxがアスペクト比を維持するうえで便利
    • 使い方に気を付ける

参考にしたページ

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?