Unity4.6から搭載されているuGUIは、Canvasの
RenderMode値で描画方法を変更することが出来ます。
問題となるのはOculusRift対応の為にOVRCameraRigを使用し、UIをWorldSpaceかつオーバーレイ表示にしたい場合です。
OculusRift対応を考えなければScreen Space - OverlayやCullingMaskを弄ったCameraで対応できます。
しかしながらOVRCameraRigを使用する場合は、色々試してみたもののうまくできませんでした。
対処として、シェーダを利用したオーバーレイ表示を実装しました。
uGUIデフォルトのシェーダをダウンロードし、以下のファイルをプロジェクトに追加します。
(デフォルトのシェーダは
こちらからダウンロード可能です)
・DefaultResourcesExtra/UI/UI-Default.shader
・DefaultResourcesExtra/UI/UI-DefaultFont.shader
これらのファイルを以下のように変更します。
・シェーダ名が被るので適当に変更(例:***-Overlay)
・RenderTypeをOverlayに変更
・QueueをOverlayに変更
・ZWriteをOnに変更
・ZTestをAlwaysに変更
このシェーダを適用したマテリアルを作成し、UIに割り当てます。
TextにはUI-DefaultFontを、それ以外はUI-Defaultを使用します。
これでUIがオーバーレイで表示できるようになりました。
こんな感じに表示できます。