SpriteUtility.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEngine;
  5. public class SpriteUtility : MonoBehaviour
  6. {
  7. #region Config
  8. public string Path;
  9. public string Name;
  10. public Sprite Sprite;
  11. #endregion
  12. public static Mesh CreateMesh(Sprite sprite)
  13. {
  14. Mesh mesh = new Mesh();
  15. List<Vector3> vertices = new List<Vector3>();
  16. List<int> triangles = new List<int>();
  17. foreach (var vertex in sprite.vertices)
  18. {
  19. vertices.Add(vertex);
  20. }
  21. foreach (var triangle in sprite.triangles)
  22. {
  23. triangles.Add(triangle);
  24. }
  25. mesh.vertices = vertices.ToArray();
  26. mesh.triangles = triangles.ToArray();
  27. mesh.uv = sprite.uv;
  28. mesh.colors = Enumerable.Repeat(Color.white, mesh.vertices.Length).ToArray();
  29. return mesh;
  30. }
  31. public static Mesh CreateMesh(Sprite sprite, Color color)
  32. {
  33. Mesh mesh = new Mesh();
  34. List<Vector3> vertices = new List<Vector3>();
  35. List<int> triangles = new List<int>();
  36. foreach (var vertex in sprite.vertices)
  37. {
  38. vertices.Add(vertex);
  39. }
  40. foreach (var triangle in sprite.triangles)
  41. {
  42. triangles.Add(triangle);
  43. }
  44. mesh.vertices = vertices.ToArray();
  45. mesh.triangles = triangles.ToArray();
  46. mesh.uv = sprite.uv;
  47. mesh.colors = Enumerable.Repeat(color, mesh.vertices.Length).ToArray();
  48. return mesh;
  49. }
  50. }