SpriteUtility.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. //foreach (var uv in sprite.uv)
  30. //{
  31. // Debug.LogWarning(sprite.name + " " + uv);
  32. //}
  33. return mesh;
  34. }
  35. public static Mesh CreateMesh(Sprite sprite, Color color)
  36. {
  37. Mesh mesh = new Mesh();
  38. List<Vector3> vertices = new List<Vector3>();
  39. List<int> triangles = new List<int>();
  40. foreach (var vertex in sprite.vertices)
  41. {
  42. vertices.Add(vertex);
  43. }
  44. foreach (var triangle in sprite.triangles)
  45. {
  46. triangles.Add(triangle);
  47. }
  48. mesh.vertices = vertices.ToArray();
  49. mesh.triangles = triangles.ToArray();
  50. mesh.uv = sprite.uv;
  51. mesh.colors = Enumerable.Repeat(color, mesh.vertices.Length).ToArray();
  52. return mesh;
  53. }
  54. }