using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class MapGenerator : MonoBehaviour { public string nameHeard = "L"; public int x_Count = 0; public int y_Count = 0; public string ab_Name; private List quadList = new List(); private bool isInit = false; public void ShowMap() { if (!isInit) { StartCoroutine(CreatMap()); } else { foreach (var mapQuad in quadList) { mapQuad.SetActive(true); } } } public void Hide() { foreach (var mapQuad in quadList) { mapQuad.SetActive(false); } } private IEnumerator CreatMap() { WaitForSeconds wait = new WaitForSeconds(0.01f); isInit = true; for (int i = 0; i < x_Count; i++) { for (int j = 0; j < y_Count; j++) { GeneratorQuad(i, j, new Vector2(1, 1)); } yield return wait; } } private void GeneratorQuad(int _x, int _y, Vector2 _size) { string texName =$"{nameHeard}{_x}_{_y}"; GameObject tempQuad = new GameObject(texName); MeshFilter meshFilter = tempQuad.AddComponent(); MeshRenderer meshRenderer = tempQuad.AddComponent(); Material tempMat=new Material(Shader.Find("Unlit/Texture")); meshRenderer.material = tempMat; TextureLoadHelp._Instance.LoadTexFromUrl_AB(ab_Name,texName + ".jpg",tempMat); Mesh mesh = new Mesh(); mesh.vertices = new Vector3[] { new Vector3(-_size.x / 2, -_size.y / 2, 0), // BL new Vector3(-_size.x / 2, _size.y / 2, 0), // TL new Vector3(_size.x / 2, _size.y / 2, 0), // TR new Vector3(_size.x / 2, -_size.y / 2, 0), // BR }; mesh.uv = new Vector2[] { new Vector2(0, 0), // BL new Vector2(0, 1), // TL new Vector2(1, 1), // TR new Vector2(1, 0), // BR }; mesh.triangles = new int[] { 0, 1, 2, 2, 3, 0 }; meshFilter.mesh = mesh; tempQuad.transform.SetParent(this.transform); tempQuad.transform.localScale = Vector3.one; var x = (-x_Count * 0.5f) + (_y * _size.x) + 0.5f; var y = (y_Count * 0.5f) - (_x * _size.y) - 0.5f; tempQuad.transform.localPosition = new Vector3(x,y,0); quadList.Add(tempQuad); } }