2
1

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 5 years have passed since last update.

"Screen Space - Overlay"なCanvasのuGUI要素が、Orthographicなカメラで3Dオブジェクトの背後に隠れてしまう

Last updated at Posted at 2019-05-21

前提

  • unity: 2017.4.27f1、2018.4.0f1
  • unity Asset Store: Alpha Mask

状況

  • "Screen Space - Overlay"なCanvasに配置したAlpha Maskを施したImageが、Orthographicなカメラで3Dオブジェクトの背後に隠れてしまいます。
  • カメラがPerspectiveだと正しく表示されます。
  • Android向けにビルドして実機で実行したときに発症し、PC向けビルドでは発症しません。
    • エディタでは起きたり起きなかったりしますが、条件は特定できていません。

課題

  • カメラのOrthographic/Perspectiveに拠らず、マスクされたuGUIの画像が、3Dの前面に表示されるようにしたいです。

結論

  • Alpha Maskに含まれる2D用シェーダ(Sprites-Alpha-Mask-WorldCoords.shader)中の、"ZWrite Off"と書かれている辺りに1行追加して、"ZTest [unity_GUIZTestMode]"を加えることで解決可能です。

"unity_GUIZTestMode"は、マニュアルに記述が見つけられなかったのですが、この辺りに拠れば「Canvasのタイプに応じて適切な値になる(Screen Space - OverlayならAlways)」もののようです。

解決までに試したこと

  • unityのバージョンを変えて試しました。
  • unityのプロジェクト設定(品質やグラフィック)を色々試しました。
  • Alpha Maskの開発元に問い合わせました。
    • (解決したことも報告しましたが、記事執筆時点(2019/5/22)までには何も返信ありません。 ⇒ 5/24 返信をいただき、「次の更新に含めるかも」とのことでした。)
  • Alpha Maskのシェーダーを標準のUI用シェーダー(UI-Default.shader)と比較して、相違点をひとつずつ変更して試しました。
2
1
1

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?