UIの手前に通常オブジェクトを表示させる【Unity】

unity技術

Canvas」のUIオブジェクトは常に手前に表示されるように設計されています。
メインカメラ越しの通常のオブジェクトをUIの手前(上)に表示したい場合の方法です。

UIカメラ設定を変更するので、「Canvas」オブジェクトを選択します。

  • Camera」内の「Render Mode」を「Screen Space-Camera」に変更します
  • Render Camera」部分に「Main Cameraをドラッグして、メインカメラに設定します
  • Plane Distance」を調整し、通常オブジェクトの奥に表示される数値を探します

この方法でカメラを設定すると、メインカメラとUIカメラが一体になったようにSceneでの作業もできるようになります。
もとのCanvasカメラに戻すと、表示も元に戻ってしまうみたいなので、トレードオフな機能のようです。

この設定にした際、「キャラが透けて見える」「UIがチカチカする」といった問題が起こるときがあります。
そのための保険として「Sorting Layer」でも表示方法を固定しておくのが良いです。

UIオブジェクトと通常オブジェクトに、コンポーネント追加にて「Sorting Group」を追加します。

  • 新規で「Sorting Layer」を2つ作成します。
    1. Character(下側に配置=手前)命名は任意
    2. UI_Opinion(上側に配置=奥)命名は任意
  • 通常オブジェクト(キャラクター)の「Sorting Layer」を「Character」にする
  • UIオブジェクトの「Sorting Layer」を「UI_Opinion」にする

物理的な距離(Z軸)だけでなく、描画エンジンに対しても論理的に命令しておく、ということになります。

コメント