在实现unity的全屏按钮时,很多人(以前我也是其中一员)会选择一个全透明的全屏图片做为载体。全透明的图片也会被发送给Gpu占据渲染的时间,也就是说透明图片也会被渲染,用全透明的图片做全屏按钮的做法是不太可取的,从优化的层面来说是可以不消耗的,毕竟一个个全屏的按钮上层一般还有其他元素,会影响overdraw,在unity的教程中有提到(参见https://unity3d.com/cn/learn/tutorials/topics/best-practices/fill-rate-canvases-and-input?playlist=30089)。
又要怎么实现不使用透明图片而且不影响按钮功能实现呢?我做了如下脚本来实现:
public class testButton : Graphic {
protected override void OnPopulateMesh(VertexHelper vh)
{
vh.Clear();
}
}
挂上这个脚本就可以做到不带来三角面,不带来overdraw也能被射线检测到。
(本人还在学习阶段,如有不同意见欢迎指正。)