MapGenerator.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. public class MapGenerator : MonoBehaviour
  6. {
  7. public string nameHeard = "L";
  8. public int x_Count = 0;
  9. public int y_Count = 0;
  10. public string ab_Name;
  11. private List<GameObject> quadList = new List<GameObject>();
  12. private bool isInit = false;
  13. public void ShowMap()
  14. {
  15. if (!isInit)
  16. {
  17. StartCoroutine(CreatMap());
  18. }
  19. else
  20. {
  21. foreach (var mapQuad in quadList)
  22. {
  23. mapQuad.SetActive(true);
  24. }
  25. }
  26. }
  27. public void Hide()
  28. {
  29. foreach (var mapQuad in quadList)
  30. {
  31. mapQuad.SetActive(false);
  32. }
  33. }
  34. private IEnumerator CreatMap()
  35. {
  36. WaitForSeconds wait = new WaitForSeconds(0.01f);
  37. isInit = true;
  38. for (int i = 0; i < x_Count; i++)
  39. {
  40. for (int j = 0; j < y_Count; j++)
  41. {
  42. GeneratorQuad(i, j, new Vector2(1, 1));
  43. }
  44. yield return wait;
  45. }
  46. }
  47. private void GeneratorQuad(int _x, int _y, Vector2 _size)
  48. {
  49. string texName =$"{nameHeard}{_x}_{_y}";
  50. GameObject tempQuad = new GameObject(texName);
  51. MeshFilter meshFilter = tempQuad.AddComponent<MeshFilter>();
  52. MeshRenderer meshRenderer = tempQuad.AddComponent<MeshRenderer>();
  53. Material tempMat=new Material(Shader.Find("Unlit/Texture"));
  54. meshRenderer.material = tempMat;
  55. TextureLoadHelp._Instance.LoadTexFromUrl_AB(ab_Name,texName + ".jpg",tempMat);
  56. Mesh mesh = new Mesh();
  57. mesh.vertices = new Vector3[]
  58. {
  59. new Vector3(-_size.x / 2, -_size.y / 2, 0), // BL
  60. new Vector3(-_size.x / 2, _size.y / 2, 0), // TL
  61. new Vector3(_size.x / 2, _size.y / 2, 0), // TR
  62. new Vector3(_size.x / 2, -_size.y / 2, 0), // BR
  63. };
  64. mesh.uv = new Vector2[]
  65. {
  66. new Vector2(0, 0), // BL
  67. new Vector2(0, 1), // TL
  68. new Vector2(1, 1), // TR
  69. new Vector2(1, 0), // BR
  70. };
  71. mesh.triangles = new int[] { 0, 1, 2, 2, 3, 0 };
  72. meshFilter.mesh = mesh;
  73. tempQuad.transform.SetParent(this.transform);
  74. tempQuad.transform.localScale = Vector3.one;
  75. var x = (-x_Count * 0.5f) + (_y * _size.x) + 0.5f;
  76. var y = (y_Count * 0.5f) - (_x * _size.y) - 0.5f;
  77. tempQuad.transform.localPosition = new Vector3(x,y,0);
  78. quadList.Add(tempQuad);
  79. }
  80. }