美文网首页
NGUI中绘制属性图或多边形图

NGUI中绘制属性图或多边形图

作者: jojo911 | 来源:发表于2018-10-08 18:21 被阅读0次

在UIBasicSprite中增加多边形的填充,代码如下


void PolygonFill(List<Vector3> verts, List<Vector2> uvs, List<Color> cols)

    {

        Vector4 u = drawingUVs;

        Color c = drawingColor;

        Vector2 prevX = Vector2.zero;

        int vertices = mPolygonSides + 1;

        float degrees = 360f / mPolygonSides;

        if (mVerticesDistances.Length != vertices)

        {

            mVerticesDistances = new float[vertices];

            for (int i = 0; i < vertices - 1; i++) mVerticesDistances[i] = 1;

        }

        // last vertex is also the first!

        mVerticesDistances[vertices - 1] = mVerticesDistances[0];

        float pointSize = localSize.x > localSize.y ? localSize.y : localSize.x;

        for (int k = 0; k < vertices; k++)

        {

            float outer = -0.5f * pointSize * mVerticesDistances[k];

            float rad = Mathf.Deg2Rad * (k * degrees + mRotation);

            float radCos = Mathf.Cos(rad);

            float radSin = Mathf.Sin(rad);

            mTempUVs[0] = new Vector2(0, 1);

            mTempUVs[1] = new Vector2(1, 1);

            mTempUVs[2] = new Vector2(1, 0);

            mTempUVs[3] = new Vector2(0, 0);

            mTempPos[0] = prevX;

            mTempPos[1] = new Vector2(outer * radCos, outer * radSin);

            mTempPos[2] = Vector2.zero;

            mTempPos[3] = Vector2.zero;

            prevX = mTempPos[1];

            for (int i = 0; i < 4; ++i)

            {

                verts.Add(mTempPos[i]);

                uvs.Add(mTempUVs[i]);

                cols.Add(c);

            }

        }

    }

相关文章

网友评论

      本文标题:NGUI中绘制属性图或多边形图

      本文链接:https://www.haomeiwen.com/subject/vvbjaftx.html