UnityEngine.UI.VertexHelper.AddUIVertexQuad C# (CSharp) Method

AddUIVertexQuad() public method

Add a quad to the stream.

public AddUIVertexQuad ( UIVertex verts ) : void
verts UnityEngine.UIVertex 4 Vertices representing the quad.
return void
        public void AddUIVertexQuad(UIVertex[] verts)
        {
            int currentVertCount = this.currentVertCount;
            for (int i = 0; i < 4; i++)
            {
                this.AddVert(verts[i].position, verts[i].color, verts[i].uv0, verts[i].uv1, verts[i].normal, verts[i].tangent);
            }
            this.AddTriangle(currentVertCount, currentVertCount + 1, currentVertCount + 2);
            this.AddTriangle(currentVertCount + 2, currentVertCount + 3, currentVertCount);
        }

Usage Example

コード例 #1
0
        protected override void OnPopulateMesh(VertexHelper vh)
        {
            var outer = -rectTransform.pivot.x * rectTransform.rect.width;
            var inner = -rectTransform.pivot.x * rectTransform.rect.width + thickness;

            vh.Clear();
            var vert = UIVertex.simpleVert;
            var prevX = Vector2.zero;
            var prevY = Vector2.zero;
            var uv0 = new Vector2(0, 0);
            var uv1 = new Vector2(0, 1);
            var uv2 = new Vector2(1, 1);
            var uv3 = new Vector2(1, 0);
            Vector2 pos0;
            Vector2 pos1;
            Vector2 pos2;
            Vector2 pos3;
            var degrees = 360f / segments;
            var fillAngle = (int)((segments + 1) * fillPercent);
            for (int i = 0; i < fillAngle; i++)
            {
                var rad = Mathf.Deg2Rad * (i * degrees);
                var c = Mathf.Cos(rad);
                var s = Mathf.Sin(rad);
                var x = outer * c;
                var y = inner * c;
                uv0 = new Vector2(0, 1);
                uv1 = new Vector2(1, 1);
                uv2 = new Vector2(1, 0);
                uv3 = new Vector2(0, 0);
                pos0 = prevX;
                pos1 = new Vector2(outer * c, outer * s);
                if (fill)
                {
                    pos2 = Vector2.zero;
                    pos3 = Vector2.zero;
                }
                else
                {
                    pos2 = new Vector2(inner * c, inner * s);
                    pos3 = prevY;
                }
                prevX = pos1;
                prevY = pos2;
                vh.AddUIVertexQuad(SetVBO(new[] { pos0, pos1, pos2, pos3 }, new[] { uv0, uv1, uv2, uv3 }));
            }
        }
All Usage Examples Of UnityEngine.UI.VertexHelper::AddUIVertexQuad