前提
Unityでカメラからの距離に関係なく、複数のカメラを使わずに表示順を制御したいと調べたところ、SortingLayerを使うと実現できそうなのですが、MeshRenderのオブジェクトついて意図した表示になりません。
動作確認
まず、SortingLayerに「Front」を追加。以下のようにSprireRenderの画像を並べ、奥にある星の画像のSortingLayerを「Front」に変更しました。
すると、右の画像のように、カメラから見て奥にある星の画像が水色のてるてる坊主より手前に表示されるようになりました。ここまでは問題ありません。
また、テキストについても確認してみます。星の画像のSortingLayerを「Default」に戻し、Canvasを使わないTextMeshProを星の奥にテキストを追加。
このTextMeshProのExtra SettingからSortingLayerを「Front」にすると、テキストが手前に表示されるようになりました。これも問題ありません。
発生している問題
しかし、困ったのはここからです。
ヒエラルキを右クリックして、3Dから選択して作成するプリミティブなオブジェクト、MeshRenderで表示されているオブジェクトはSortingLayerの表示を無視してしまいます。
以下の画像はテキストのSortingLayerを「Front」のままですが、オブジェクトにテキストが隠れてしまっています。
このMeshRendererを使用したオブジェクトはインスペクタでSortingLayerが表示されていないため、SortingLayerが反映されない(存在しない?)のかと思ったのですが、調べると以下のような変更方法についての記述が幾つか見つかります。
参考
https://tsubakit1.hateblo.jp/entry/2015/01/05/233000
https://qiita.com/miikun109/items/dada342d23bf58cc879f
https://hassakulab.com/knowledges/unity-renderer-order-between-sprite-and-mesh/
試したこと
参考にしたこちらのサイト:https://tsubakit1.hateblo.jp/entry/2015/01/05/233000
のスクリプトを元に、オブジェクトのSortingLayerを明示的にDefaultを指定して見たり、SortingLayerの設定でDefaultより小さいSortingLayerの追加、オブジェクトに設定したりしましたが、やはりオブジェクトの表示にはSortingLayerが反映されず、上記画像の位置関係であれば常に手前に表示されてしまいます。
SortingLayerを使用してMeshRenderを使ったオブジェクトの表示順を変更するにはどうすればよいのでしょうか。
頂いた追記・修正の依頼を元に補足
Bongoさんの指摘を元にオブジェクトのマテリアルをFadeに変更したところ、上記のように実現することが出来ました。
しかし、この方法では既存の3Dモデルのアセットをすべてのマテリアルを変更しなければならず(それが最初から変えておくか、実行中に動的に変えるかはともかく)、手間が掛かったり、見た目が変わってしまう可能性があります。
ですので、今回作成したプリミティブなオブジェクトのように、マテリアルを変更せずに表示順の変更を実現したいです。
補足情報(FW/ツールのバージョンなど)
確認をしたunityのバージョンは2021.3.4f1です。

まだ回答がついていません
会員登録して回答してみよう