我在Unity中爲谷歌紙板創建簡單的VR遊戲,並且創建了顯示分數的UI文本並且是相機的子項。我的問題是我無法使其始終可見。我知道它可以與Screen Space - Overlay一起使用,但是如何使用World Space Canvas來實現?如何在Unity中始終顯示World Space UI?
0
A
回答
3
這是我用來做它的着色器:
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;
fixed4 _TextureSampleAdd; //Added for font color support
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) + _TextureSampleAdd) * IN.color; //Added for font color support
clip(color.a - 0.01);
return color;
}
ENDCG
}
}
}
- 在您的項目
- 創建這個shader與此着色器
- 創建材料的材質應用到要出現在眼前的一切的元素都
來源http://answers.unity3d.com/questions/878667/world-space-canvas-on-top-of-everything.html
0
- 其附加到空對象
- 添加腳本對象
- 讓物體始終面臨相機通過transform.translateto
所以每當你看UI ,它面對你
相關問題
- 1. 如何始終顯示在
- 2. 我如何將UI圖像始終置於Unity 3D中
- 3. 繪製畫布內的唯一對象 - Unity - World Space
- 4. 如何始終在桌面上顯示?
- 5. 如何始終顯示在XCode6
- 6. 如何在Unity顯示player.transform.position?
- 7. 在UI Unity上顯示TimeSpan計時器
- 8. 始終顯示在FilteredResourcesSelectionDialog
- 9. 始終顯示Highcharts
- 10. 如何從LTR始終顯示UIToolBar?
- 11. 如何使屬性頁始終顯示?
- 12. 如何使PyCharm始終顯示行號
- 13. 如何始終顯示滾動條UICollectionView
- 14. 如何始終顯示滾動條
- 15. 如何始終在HTML5中的iframe中顯示滾動條
- 16. Unity始終向右移動
- 17. 如何始終在視圖控制器中顯示鍵盤?
- 18. 如何在Google地圖Subgurim中始終顯示infowindow標記?
- 19. 如何在pageviewcontroller中始終顯示鍵盤
- 20. 如何在Extjs Grid中始終顯示箭頭圖標?
- 21. 如何讓Qt始終在QTableView中顯示編輯器?
- 22. 如何始終在wp7的列表框中顯示滾動條
- 23. Dygraph如何始終在圖例中顯示值
- 24. 如何在地圖視圖中始終顯示標註?
- 25. 如何始終在JFileChooser中顯示文件名?
- 26. 如何在tt_news中始終顯示頁面瀏覽器?
- 27. 如何讓數字鍵盤始終顯示在uiview中?
- 28. 如何使DataGrid始終在WPF中顯示其列標題?
- 29. 如何在Git中始終顯示完整歷史記錄?
- 30. 如何在SWT表格中始終顯示垂直滾動條?
創建第二個攝像頭,僅將其「濾鏡蒙版」設置爲「UI」,並將其分配給UI畫布。有沒有你不想使用這種方法的原因? – yedpodtrzitko
@yedpodtrzitko我不確定它是否可以正常使用谷歌紙板相機(每個眼睛基本上有兩個相機)。我該怎麼做?爲每隻眼睛創建另一個相機,並設置其Culling Mask tp UI? –
@yedpodtrzitko如果我設法使用UI剔除掩碼創建第二個相機,那麼我怎樣才能讓它恢復最後? –