UnityEngine.UI.VertexHelper

作者:追风剑情 发布于:2019-5-27 17:31 分类:Unity3d

示例:自定义UI几何图形

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5.  
  6. public class VertexHelperTest : MonoBehaviour {
  7.  
  8. public MeshFilter meshFilter;
  9. public MeshRenderer meshRenderer;
  10. public Mesh mesh;
  11. public Material mat;
  12. public bool emptySquare = false;
  13.  
  14. private void Awake()
  15. {
  16. if (meshFilter == null)
  17. meshFilter = GetComponent<MeshFilter>();
  18. if (meshRenderer == null)
  19. meshRenderer = GetComponent<MeshRenderer>();
  20. mesh = new Mesh();
  21. meshFilter.mesh = mesh;
  22. meshRenderer.material = mat;
  23. }
  24.  
  25. void Start ()
  26. {
  27. if (emptySquare)
  28. GenEmptySquareMesh();
  29. else
  30. GenSquareMesh();
  31. }
  32.  
  33. void GenSquareMesh()
  34. {
  35. Color32 color32 = Color.red;
  36. using (var vh = new VertexHelper())
  37. {
  38. vh.AddVert(new Vector3(0, 0), color32, new Vector2(0f, 0f));
  39. vh.AddVert(new Vector3(0, 100), color32, new Vector2(0f, 1f));
  40. vh.AddVert(new Vector3(100, 100), color32, new Vector2(1f, 1f));
  41. vh.AddVert(new Vector3(100, 0), color32, new Vector2(1f, 0f));
  42.  
  43. vh.AddTriangle(0, 1, 2);
  44. vh.AddTriangle(2, 3, 0);
  45. vh.FillMesh(mesh);
  46. }
  47. }
  48.  
  49. void GenEmptySquareMesh()
  50. {
  51. Color32 color32 = Color.green;
  52. using (var vh = new VertexHelper())
  53. {
  54. vh.AddVert(new Vector3(0, 0), color32, new Vector2(0f, 0f));//0
  55. vh.AddVert(new Vector3(0, 50), color32, new Vector2(0f, 0.5f));//1
  56. vh.AddVert(new Vector3(0, 100), color32, new Vector2(0f, 1f));//2
  57. vh.AddVert(new Vector3(50, 100), color32, new Vector2(0.5f, 1f));//3
  58. vh.AddVert(new Vector3(100, 100), color32, new Vector2(1f, 1f));//4
  59. vh.AddVert(new Vector3(100, 50), color32, new Vector2(1f, 0.5f));//5
  60. vh.AddVert(new Vector3(100, 0), color32, new Vector2(1f, 0f));//6
  61. vh.AddVert(new Vector3(50, 0), color32, new Vector2(0.5f, 0f));//7
  62.  
  63. vh.AddTriangle(0, 1, 7);
  64. vh.AddTriangle(1, 2, 3);
  65. vh.AddTriangle(3, 4, 5);
  66. vh.AddTriangle(5, 6, 7);
  67. vh.FillMesh(mesh);
  68. }
  69. }
  70. }

场景效果

1111.png

2222.png

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号