| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEngine.Sprites;
-
- [RequireComponent(typeof(CanvasRenderer))]
- public class CustomBorder : MaskableGraphic
- {
- // 边框的厚度
- public float borderThickness = 5.0f;
- // 边框的颜色
- public Color borderColor = Color.black;
- protected override void Start()
- {
- base.Start();
- // 确保边框颜色使用图像模式
- //colorGradient = new ColorBlock { normal = borderColor };
- }
- protected override void OnPopulateMesh(VertexHelper vh)
- {
- vh.Clear();
- Rect rect = rectTransform.rect;
- Vector2 bottomLeft = new Vector2(rect.x, rect.y);
- Vector2 topRight = new Vector2(rect.xMax, rect.yMax);
- // 边框的四个顶点
- var v1 = new Vector2(bottomLeft.x, bottomLeft.y - borderThickness);
- var v2 = new Vector2(bottomLeft.x, topRight.y + borderThickness);
- var v3 = new Vector2(topRight.x + borderThickness, topRight.y);
- var v4 = new Vector2(topRight.x - borderThickness, bottomLeft.y);
- vh.AddUIVertexQuad(GetQuad(v1, v2, v3, v4));
- }
- private UIVertex[] GetQuad(Vector2 v1, Vector2 v2, Vector2 v3, Vector2 v4)
- {
- UIVertex[] vertexs = new UIVertex[4];
- vertexs[0] = new UIVertex();
- vertexs[0].position = v1;
- vertexs[1] = new UIVertex();
- vertexs[1].position = v2;
- vertexs[2] = new UIVertex();
- vertexs[2].position = v3;
- vertexs[3] = new UIVertex();
- vertexs[3].position = v4;
- return vertexs;
- }
- }
|