• Unity中使用自定义mesh和UImesh


    自定义Mesh

    1. public float width = 1;
    2. public float height = 1;
    3. public void CreateMesh()
    4. {
    5. MeshRenderer meshRenderer = gameObject.GetComponent();
    6. meshRenderer.sharedMaterial = new Material(Shader.Find("Standard"));
    7. MeshFilter meshFilter = gameObject.GetComponent();
    8. Mesh mesh = new Mesh();
    9. Vector3[] vertices = new Vector3[4]
    10. {
    11. new Vector3(0, 0, 0),
    12. new Vector3(width, 0, 0),
    13. //new Vector3(0, height, 0),
    14. Quaternion.Euler(0,0,60)* Vector3.up *2,
    15. new Vector3(width, height, 0)
    16. };
    17. mesh.vertices = vertices;
    18. int[] tris = new int[6]
    19. {
    20. // 左下方三角形
    21. 0, 2, 1,
    22. // 右上方三角形
    23. 2, 3, 1
    24. };
    25. mesh.triangles = tris;
    26. Vector3[] normals = new Vector3[4]
    27. {
    28. -Vector3.forward,
    29. -Vector3.forward,
    30. -Vector3.forward,
    31. -Vector3.forward
    32. };
    33. mesh.normals = normals;
    34. Vector2[] uv = new Vector2[4]
    35. {
    36. new Vector2(0, 0),
    37. new Vector2(1, 0),
    38. new Vector2(0, 1),
    39. new Vector2(1, 1)
    40. };
    41. mesh.uv = uv;
    42. meshFilter.mesh = mesh;
    43. }

    自定义六边形UIMesh:

    1. [SerializeField] private Material radarMaterial;
    2. [SerializeField] private Texture2D radarTexture2D;
    3. [SerializeField]
    4. private CanvasRenderer radarMeshCanvasRenderer;
    5. private void UpdateStatsVisual()
    6. {
    7. Mesh mesh = new Mesh();
    8. Vector3[] vertices = new Vector3[6];
    9. Vector2[] uv = new Vector2[6];
    10. int[] triangles = new int[3 * 5];
    11. float angleIncrement = 360f / 5;
    12. float radarChartSize = 145f;
    13. Vector3 attackVertex = Quaternion.Euler(0, 0, -angleIncrement * 0) * Vector3.up * radarChartSize ;
    14. int attackVertexIndex = 1;
    15. Vector3 defenceVertex = Quaternion.Euler(0, 0, -angleIncrement * 1) * Vector3.up * radarChartSize;
    16. int defenceVertexIndex = 2;
    17. Vector3 speedVertex = Quaternion.Euler(0, 0, -angleIncrement * 2) * Vector3.up * radarChartSize;
    18. int speedVertexIndex = 3;
    19. Vector3 manaVertex = Quaternion.Euler(0, 0, -angleIncrement * 3) * Vector3.up * radarChartSize;
    20. int manaVertexIndex = 4;
    21. Vector3 healthVertex = Quaternion.Euler(0, 0, -angleIncrement * 4) * Vector3.up * radarChartSize;
    22. int healthVertexIndex = 5;
    23. vertices[0] = Vector3.zero;
    24. vertices[attackVertexIndex] = attackVertex;
    25. vertices[defenceVertexIndex] = defenceVertex;
    26. vertices[speedVertexIndex] = speedVertex;
    27. vertices[manaVertexIndex] = manaVertex;
    28. vertices[healthVertexIndex] = healthVertex;
    29. uv[0] = Vector2.zero;
    30. uv[attackVertexIndex] = Vector2.one;
    31. uv[defenceVertexIndex] = Vector2.one;
    32. uv[speedVertexIndex] = Vector2.one;
    33. uv[manaVertexIndex] = Vector2.one;
    34. uv[healthVertexIndex] = Vector2.one;
    35. triangles[0] = 0;
    36. triangles[1] = attackVertexIndex;
    37. triangles[2] = defenceVertexIndex;
    38. triangles[3] = 0;
    39. triangles[4] = defenceVertexIndex;
    40. triangles[5] = speedVertexIndex;
    41. triangles[6] = 0;
    42. triangles[7] = speedVertexIndex;
    43. triangles[8] = manaVertexIndex;
    44. triangles[9] = 0;
    45. triangles[10] = manaVertexIndex;
    46. triangles[11] = healthVertexIndex;
    47. triangles[12] = 0;
    48. triangles[13] = healthVertexIndex;
    49. triangles[14] = attackVertexIndex;
    50. mesh.vertices = vertices;
    51. mesh.uv = uv;
    52. mesh.triangles = triangles;
    53. radarMeshCanvasRenderer.SetMesh(mesh);
    54. radarMeshCanvasRenderer.SetMaterial(radarMaterial, radarTexture2D);
    55. }

    参考链接:

    Example: creating a quad - Unity 手册

    https://www.youtube.com/watch?v=twjMW7CxIKk&list=RDCMUCFK6NCbuCIVzA6Yj1G_ZqCg&index=2

  • 相关阅读:
    【网络安全 --- win10系统安装】win10 系统详细安装过程(提供资源)
    Java-Lambda表达式基本理解及使用
    入门力扣自学笔记72 C++ (题目编号515)
    Android Jetpack组件架构 :LiveData的使用和原理
    SIM800C模块AT指令编程指南
    【性能测试】ChaosTesting(混沌测试)&ChaosBlade(混沌实验工具)(四)-k8s容器混沌实验
    Flutter 环境配置
    redis cluster集群搭建
    Data-Free Learning of Student Networks论文阅读+代码解析
    案例分享 | 纽扣电池石墨片厚度及缺陷检测
  • 原文地址:https://blog.csdn.net/weixin_50702814/article/details/133390735