ikoan unity 開発メモ

Unityに関するアレコレを日々つづっていこうと思います

uGUI基本設定[Canvas] その2

はじめに

uGUIリリースされてから、一体どれぐらいたったのかわからない。
いままで仕事上ではNGUI使っていたので、逃げていたけれど
ついにuGUI触ってみようかな、と。

環境

Unity2018.2f

前回まで

Canvasコンポーネントについて調べたよ!

今回は

まずCanvas Scaler について。
画面解像度やアスペクト比に対応するコンポーネントはこれなんだろうなぁと思いつつ。
早速、インスペクターの情報を見て行こう。

まずScale Mode
ConstantPixelSize UI 要素の位置とサイズはスクリーン上のピクセルで指定されます。
ScaleWithScreenSize Using the Scale With Screen Size mode, positions and sizes can be specified according to the pixels of a specified reference resolution. If the current screen resolution is larger than the reference resolution, the Canvas will keep having only the resolution of the reference resolution, but will scale up in order to fit the screen. If the current screen resolution is smaller than the reference resolution, the Canvas will similarly be scaled down to fit.
ConstantPhysicalSize UI 要素の位置とサイズはミリメートル、ポイント、パイカのような物理単位で指定されます。

スクリプトリファレンス見ると、なぜか一つだけ和訳されていない。
とりあえず言えることはConstantPhysicalSizeのような、実世界の単位で構築することは少ないだろう。
となると、ConstantPixelSizeかScaleWithScreenSizeになる。
ScaleWithScreenSizeをざっと和訳すると・・・
位置や大きさはreference resolutionに依存すると。実際のスクリーンサイズがそれより大きいなら、
canvasはreference resolutionを維持し続けるか拡大するか?それより小さい場合は縮小するか?(適当翻訳)
ConstantPixelSizeは解像度が変わっても、入力したピクセル単位の情報を保持し続け、ScaleWithScreenSizeは画面のサイズによって、良い感じに拡縮するってことかな。
となると、基本的に使うのはScaleWithScreenSizeになりそう。

さて、じゃぁScale ModeをScaleWithScreenSizeにした時の他の設定値はどうなるのか。
Reference resouletionはきっと基準となる解像度。
Screen Match Modeは・・・
MatchWidthOrHeight 参照としての width、参照としての heightや、間に何かがある Canvas 領域を拡縮します。
Expand Canvas 領域を、水平・垂直のどちらにも拡大します。ですので、Canvas のサイズは参照よりも小さくなることはありません。
Shrink Canvas 領域を水平・垂直のどちらにも切り整えます。ですので、Canvas のサイズは参照よりも大きくなることはありません。
全然違いがわかりません。
少なくともShrinkは、表示領域以上のところはカットされるんだろう、ということはわかる。
Expandはアスペクト比は確保したまま、拡大してくれるんだろうか。
そもそもMatchWidthOrHeightの説明は何を言っているのか全然わからん。
間に何かがあるって何ぞ・・・
これは実際にいじって見ないとわからないかな。

Reference Pixel Per Unit
スプライトがこの 'Pixels Per Unit' 設定を有していれば、スプライトの 1 ピクセルは UI 内での 1 ユニットをカバーします。
はい、意味不明。
スプライトとUI内のピクセル単位の変換情報なんだろうけど、デフォルト値が100なのが、気に食わない。

次の課題

結局よくわからないところが多かった。
次はさらに次のコンポーネントの解釈と
今回いじって見ないとわからなさそうだった
Screen Match Mode のExpandとMatchWidthOrHeightの挙動の違い
Reference Pixel Per Unitの挙動について、調べられれれば良いなと思っている次第。