(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

Text Meshがオブジェクトの裏から透けて見えるのを防ぐ【Unity】【Shader】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2017.4.7f1


はじめに

UnityではText Meshを使うことで、簡単に3D空間上にテキストを表示する事が出来ます。


f:id:kan_kikuchi:20180828090339j:plain


しかし、デフォルトの状態で使うとオブジェクトの裏から透けて見えてしまいます。


f:id:kan_kikuchi:20180828082601g:plain


今回はこれをどうにかしようといった感じの記事です。


Text Meshがオブジェクトの裏から透けて見えるのを防ぐ


まずはText Meshに使われてるShaderと同じものを以下からダウンロードしてきます。

(内蔵されているビルドインシェーダーは修正出来ないので)



f:id:kan_kikuchi:20180815095656j:plain


ダウンロードをしたZipを解凍、中にあるFont.shaderをプロジェクトへ追加し、


f:id:kan_kikuchi:20180828084628j:plain


ファイル自体の名前と、シェーダーの名前の記述を変更(今回はFontEx)して、


f:id:kan_kikuchi:20180828084847j:plain
f:id:kan_kikuchi:20180828090322j:plain


別のシェーダーとして使えるようにします。


f:id:kan_kikuchi:20180828090303j:plain


そして肝心のシェーダーの修正内容ですが、以下の3つの項目を書き換えるだけ。

Cull Off → Cull Back 
ZTest Always → ZTest LEqual
ZWrite Off → ZWrite On 

f:id:kan_kikuchi:20180828090545j:plain
f:id:kan_kikuchi:20180828090557j:plain


あとはMaterialを新しく作成し、


f:id:kan_kikuchi:20180828090947j:plain


Shaderを先程作ったものに変更、使いたいフォントのTextureを設定します。

(内蔵されているArialはTextureを取得出来ないため使えません。)

f:id:kan_kikuchi:20180828091027j:plain


最後にText MeshにFontを設定してから、Materialを変更すれば、


f:id:kan_kikuchi:20180828091054j:plain


Text Meshがオブジェクトの裏から透けて見える事がなくなります。


f:id:kan_kikuchi:20180828093434g:plain


参考