在我的场景中,表情符号(带有png图像的四边形)放置在Y:0处,点(带有平铺3X3的四边形)放置在Y:-0.25处。 我需要用于表情符号的着色器是透明 - 漫反射,因为我正在使用圆形png图像。
但我在下面使用的点数显示在笑脸之上。使用像漫反射这样的任何其他着色器解决了问题,但笑脸变成了正方形。
截图:
如果您需要进一步澄清,请随时提出。
编辑: 我已经从检查员面板上附上了笑脸和圆点的着色器细节。 链接:http://postimg.org/image/cvws1os7d/
编辑2: 我发现问题应该在MainCamera上,尤其是距离& "视野"。 我需要使用" Perspective"作为投影类型,140作为视野。
如果我将投影类型更改为“正交”,问题就完全解决了。
以下屏幕截图显示距离和视野如何控制笑脸上点的外观。
截屏1: Y位置:8.48 视野范围:30 链接:http://postimg.org/image/s31tttrkp/
截屏2: Y位置:9.7 视野范围:30 链接:http://postimg.org/image/f71sq0y4b/
截屏3: Y位置:11.41 视野范围:30 链接:http://postimg.org/image/3uk4az3d3/
屏幕截图4: Y位置:1 视野:140 链接:http://postimg.org/image/bul9zwg7z/
这可能是一个线索吗?
答案 0 :(得分:2)
如果您使用Sprite Renderer
组件渲染图片,则必须使用Sorting Layer
和Order in Layer
参数更改渲染顺序,而不是更改Y位置。
可以通过单击"默认"添加排序图层。并选择"添加排序图层。"。通过将图层拖动到不同的顺序来更改图层的顺序。使用Order in Layer
时,会先渲染较小的数字。这意味着较高的数字将被绘制在较低的数字之上。
答案 1 :(得分:2)
关于透明度通常如何实施的一些信息(不仅仅是Unity)。
同时,可以按任何顺序绘制不透明对象(即使按照前后顺序对它们进行排序最终可以依赖于早期的z-cull来提高某些GPU性能)。可以使用存储在z-buffer中的深度值推断出哪些像素可见。
您不能依赖z-buffer来提高透明度。 对于渲染半透明对象,一种典型的方法是在所有不透明对象之后绘制它们,并按照从前到后的顺序对它们进行排序(首先绘制距离相机较远的透明对象)。
现在的问题是:你如何对物体进行排序?使用透视相机和通用形状的网格the solution is not obvious。
对于平行于ortographic相机视图平面的四边形网格,z顺序是隐式正确的(这就是为什么它总是适合你)。 您还可以注意到摄像机位置会影响绘图顺序,因为使用透视摄像机时,顺序计算为对象位置和摄像机之间的距离。
那么在您的特定用例场景中,您可以使用Unity3d
做什么?
几个技巧:
希望这会有所帮助
修改
我不知道,camera transparency sorting mode似乎可以自定义。所以这是另一种解决方案,如果您想使用透视相机,也许最适合您的情况。