2016-03-25 12 views
1

私は単なるグッドボーナスのカードボードゲームを作成しています。スコアカードを追加したいと思います。私はそれを正常に行う方法を知っていますが、VRではそれは私のためには機能しません。私はちょうどテキストを置いてそれにスコアを表示しようとしましたが、それは良い(それは1つの目のためだけに表示されたためではありません)しかし、私はそれをテストした後、私の電話テキストはまったく別の場所にあった。あなたはそれを行う適切な方法が何であるか知っていますか?Google for VRのGUI Unityのカードボード

+0

アプリボードのデザインをボール紙で見ていますか? – tim

答えて

2

ワールドスペースキャンバスを作成し、そのキャンバスをカメラに取り付けます。 VRゲームで私のUIをどうやって得るのですか?

World Space UIオブジェクトのカスタムシェーダが必要です。オーバーレイにオーダーをレンダリングし、ZTestをオフにしています。

これは、必要な変更を加えたDefault UIシェーダのコピーです。トリックをする必要があります。このシェーダを使用して素材を作成し、WorldSpace UIのジオメトリ上に描画するすべてのものに適用します。

Shader "UI/Default_OverlayNoZTest" 
{ 
    Properties 
    { 
     [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} 
     _Color ("Tint", Color) = (1,1,1,1) 

     _StencilComp ("Stencil Comparison", Float) = 8 
     _Stencil ("Stencil ID", Float) = 0 
     _StencilOp ("Stencil Operation", Float) = 0 
     _StencilWriteMask ("Stencil Write Mask", Float) = 255 
     _StencilReadMask ("Stencil Read Mask", Float) = 255 

     _ColorMask ("Color Mask", Float) = 15 
    } 

    SubShader 
    { 
     Tags 
     { 
      "Queue"="Overlay" 
      "IgnoreProjector"="True" 
      "RenderType"="Transparent" 
      "PreviewType"="Plane" 
      "CanUseSpriteAtlas"="True" 
     } 

     Stencil 
     { 
      Ref [_Stencil] 
      Comp [_StencilComp] 
      Pass [_StencilOp] 
      ReadMask [_StencilReadMask] 
      WriteMask [_StencilWriteMask] 
     } 

     Cull Off 
     Lighting Off 
     ZWrite Off 
     ZTest Off 
     Blend SrcAlpha OneMinusSrcAlpha 
     ColorMask [_ColorMask] 

     Pass 
     { 
     CGPROGRAM 
      #pragma vertex vert 
      #pragma fragment frag 
      #include "UnityCG.cginc" 

      struct appdata_t 
      { 
       float4 vertex : POSITION; 
       float4 color : COLOR; 
       float2 texcoord : TEXCOORD0; 
      }; 

      struct v2f 
      { 
       float4 vertex : SV_POSITION; 
       fixed4 color : COLOR; 
       half2 texcoord : TEXCOORD0; 
      }; 

      fixed4 _Color; 

      v2f vert(appdata_t IN) 
      { 
       v2f OUT; 
       OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex); 
       OUT.texcoord = IN.texcoord; 
#ifdef UNITY_HALF_TEXEL_OFFSET 
       OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); 
#endif 
       OUT.color = IN.color * _Color; 
       return OUT; 
      } 

      sampler2D _MainTex; 

      fixed4 frag(v2f IN) : SV_Target 
      { 
       half4 color = tex2D(_MainTex, IN.texcoord) * IN.color; 
       clip (color.a - 0.01); 
       return color; 
      } 
     ENDCG 
     } 
    } 
} 

クレジットは私が言うと思いますhttp://answers.unity3d.com/questions/878667/world-space-canvas-on-top-of-everything.html

+0

あなたはこれを好きですか? http://imgur.com/VLTSEmF正常に動作しますが、このUIを常に表示するにはどうすればよいですか(時にはゲームの中で何かの背後に隠れることがあります)。 –

+0

@faken私は私の答えを編集してそれが助けてくれることを願っています。 –

+0

このシェーダを新しいUnity 5.4に適用することは必須ではないと思います。誰かが確認できますか? – Ashish

0

に行きます。 RenderTextureを設定して、あなたの/ UIを唯一のものにしてから、あなたの世界の何かにRenderTextureを貼り付けてください。

関連する問題