protected override void OnPopulateMesh(VertexHelper vh)
        {
            vh.Clear();
            if (sprite == null)
            {
                return;
            }
            var rect         = rectTransform.rect;
            var rectSize     = new Vector2(rect.width, rect.height);
            var size         = new Vector4(0, 0, rectSize.x, rectSize.y);
            var uv           = DataUtility.GetOuterUV(sprite);
            var pivotSize    = Vector2.Dot(rectSize, direction) + spacing;
            var countInteger = Mathf.FloorToInt(count);
            var countFract   = count - countInteger;
            var basePos      = TransformUtility.CheckOffsetBiased(rectTransform, direction, spacing, count);

            for (int e = 0; e < countInteger; ++e)
            {
                var pos = basePos + e * pivotSize * direction;
                MeshUtility.AddSimple(vh, Color.white, pos, size, uv);
            }
            if (countFract > 0)
            {
                var posLast = basePos + countInteger * pivotSize * direction;
#if SCALED_FRACTIONAL
                posLast.x += width * countFract * 0.5f;
                MeshUtility.AddSimple(vh, Color.white, posLast, size * countFract, uv);
#else //clipped factional
                size.z *= countFract;
                uv.z    = uv.x + (uv.z - uv.x) * countFract;
                MeshUtility.AddSimple(vh, Color.white, posLast, size, uv);
#endif
            }
        }
        protected override void OnPopulateMesh(VertexHelper vh)
        {
            vh.Clear();
            if (sprite == null)
            {
                return;
            }
            var rect      = rectTransform.rect;
            var rectSize  = new Vector2(rect.width, rect.height);
            var size      = new Vector4(0, 0, rectSize.x, rectSize.y);
            var uv        = DataUtility.GetOuterUV(sprite);
            var pivotSize = Vector2.Dot(rectSize, direction) + spacing;
            var basePos   = TransformUtility.CheckOffsetBiased(rectTransform, direction, spacing, count);
            int e         = 0;

            for (; e < Mathf.Min(value, count); ++e)
            {
                var pos = basePos + e * pivotSize * direction;
                MeshUtility.AddSimple(vh, Color.white, pos, size, uv);
            }
            if (option == null)
            {
                return;
            }
            uv = DataUtility.GetOuterUV(option);
            for (; e < count; ++e)
            {
                var pos = basePos + e * pivotSize * direction;
                MeshUtility.AddSimple(vh, Color.white, pos, size, uv);
            }
        }