Raw Image调节UV Rect出现色线

blob.png


原因应该是4边的透明边缘留得太少了,有颜色的像素粘到了边缘,偏移的时候Raw Image用的边缘颜色来填充未定义的区域。

解决办法就是,重新作图,将图片的边缘的透明位置预留出来。


Raw Image修改顶点信息的源码

OnPopulateMesh重写的是从Graphic继承来的方法,使用它可以修改UI元素显示的顶点信息。

protected override void OnPopulateMesh(VertexHelper vh)
{
    Texture tex = mainTexture;
    vh.Clear();
    if (tex != null)
    {
        var r = GetPixelAdjustedRect();
        var v = new Vector4(r.x, r.y, r.x + r.width, r.y + r.height);
        var scaleX = tex.width * tex.texelSize.x;
        var scaleY = tex.height * tex.texelSize.y;
        {
            var color32 = color;
            vh.AddVert(new Vector3(v.x, v.y), color32, new Vector2(m_UVRect.xMin * scaleX, m_UVRect.yMin * scaleY));
            vh.AddVert(new Vector3(v.x, v.w), color32, new Vector2(m_UVRect.xMin * scaleX, m_UVRect.yMax * scaleY));
            vh.AddVert(new Vector3(v.z, v.w), color32, new Vector2(m_UVRect.xMax * scaleX, m_UVRect.yMax * scaleY));
            vh.AddVert(new Vector3(v.z, v.y), color32, new Vector2(m_UVRect.xMax * scaleX, m_UVRect.yMin * scaleY));

            vh.AddTriangle(0, 1, 2);
            vh.AddTriangle(2, 3, 0);
        }
    }
}


Rect的源码看不到了,设置的是x,y,w,z值,但是用的时候是xMin,xMax等的,xMin,yMin就是x和y值,而xMax = xMin+w;yMax = yMin + z。


首页 我的博客
粤ICP备17103704号