土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

#unity canvasを作るとシーンに対して無茶苦茶大きく表示されてしまう問題(?)の対応方法

 Canvasを使う時、毎回焦るのが、ヒエラルキーにCanvasを追加した時、通常のオブジェクトに対してCanvasがめちゃくちゃ大きなサイズでシーンに配置される事です。Canvas作るのって、基本的には新規プロジェクト開始時の1回しかやらないのでこれの対応方法を毎回忘れてしまいます。というわけでメモ。

 スケールが一致しないのはCanvasコンポーネントの"Render Mode"のデフォルトが「Screen Space - Overlay」になっているためです。この設定により、Canvasはスクリーン空間(≒実際の描画画面)に直接描画されるので、通常のシーン空間と完全に独立していることになり、なので、スケールがまったく異なっていても構わないわけです。

 対応方法ですが、"Render Mode"を「Screen Space - Camera」に変更したのち、"Render Camera"にカメラ(通常はMain Camera)を設定することで、カメラの視錐台にCanvasが貼りつくようになり、期待した感じになります(……正直、Overlayでも任意サイズにスケールできるべきではないか? とも思うが)。

参考サイト

Unity2D ~Canvas設定のあれそれ~(via Qiita)
https://qiita.com/yukitagawa_310/items/90f8b4e29617b1216a8d
【Unity】uGUIのCanvasとRenderModeについて(via TECH Pjin)
https://tech.pjin.jp/blog/2017/03/02/unity_ugui_canvas_rendermode/