Help us understand the problem. What is going on with this article?

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

前提

  • 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)と比較して、相違点をひとつずつ変更して試しました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away