| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 
							- using UnityEngine;
 
- using UnityEngine.UI;
 
- using System.Collections.Generic;
 
- [AddComponentMenu("UI/Effects/Nicer Outline", 15)]
 
- public class NicerOutline : BaseMeshEffect
 
- {
 
-     [SerializeField] private Color effectColor = new Color(0f, 0f, 0f, 1f);
 
-     [SerializeField] private float effectDistanceX = 2f;
 
-     [SerializeField] private float effectDistanceY = 2f;
 
-    [Range(4,12)] [SerializeField] private int samplingRate = 10;
 
-     
 
-     private static readonly List<UIVertex> vertexList = new List<UIVertex>();
 
-     private static readonly List<UIVertex> tempVertexList = new List<UIVertex>();
 
-     public override void ModifyMesh(VertexHelper vh)
 
-     {
 
-         if (!IsActive()) return;
 
-         vertexList.Clear();
 
-         tempVertexList.Clear();
 
-         vh.GetUIVertexStream(vertexList);
 
-         int count = vertexList.Count;
 
-         for (int j = 0; j < samplingRate; j++)
 
-         {
 
-             for (int i = 0; i < count; i++)
 
-             {
 
-                 UIVertex v = vertexList[i];
 
-                 float angle = j * Mathf.PI * 2f / samplingRate;
 
-                 Vector2 offset = new Vector2(Mathf.Cos(angle) * effectDistanceX, Mathf.Sin(angle) * effectDistanceY);
 
-                 UIVertex outlinedVert = new UIVertex();
 
-                 outlinedVert.position = v.position + (Vector3)offset;
 
-                 outlinedVert.normal = v.normal;
 
-                 outlinedVert.tangent = v.tangent;
 
-                 outlinedVert.uv0 = v.uv0;
 
-                 outlinedVert.uv1 = v.uv1;
 
-                 outlinedVert.color = effectColor;
 
-                 tempVertexList.Add(outlinedVert);
 
-             }
 
-         }
 
-         tempVertexList.AddRange(vertexList);
 
-         vh.Clear();
 
-         vh.AddUIVertexTriangleStream(tempVertexList);
 
-     }
 
- }
 
 
  |