| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | using System;using System.Collections;using System.Collections.Generic;using UnityEngine;public enum MapTextureType{    png,    jpg}public class MapGenerator : MonoBehaviour{    public string nameHeard = "L";    public int x_Count = 0;    public int y_Count = 0;    public string ab_Name;    private List<GameObject> quadList = new List<GameObject>();    private bool isInit = false;    private bool isShow = false;    public MapTextureType TextureType;    public bool initDone = false;        public void InitMap()    {        if (!isInit)        {            StartCoroutine(CreatMap(false));        }    }    public void ShowMap()    {        if (!isShow)        {            isShow = true;            if (!isInit)            {                StartCoroutine(CreatMap(true));            }            else            {                foreach (var mapQuad in quadList)                {                    mapQuad.SetActive(true);                }            }        }    }    public void Hide()    {        if (isShow)        {            isShow = false;            foreach (var mapQuad in quadList)            {                mapQuad.SetActive(false);            }        }    }    private IEnumerator CreatMap(bool showQuad=false)    {        isInit = true;        WaitForSeconds wait = new WaitForSeconds(0.01f);        for (int i = 0; i < x_Count; i++)        {            for (int j = 0; j < y_Count; j++)            {                GeneratorQuad(i, j, new Vector2(1, 1),showQuad);            }            yield return wait;        }        initDone = true;    }    private void GeneratorQuad(int _x, int _y, Vector2 _size,bool showQuad)    {        string texName = $"{nameHeard}{_x}_{_y}";        GameObject tempQuad = new GameObject(texName);        if (!isShow||showQuad == false)        {            tempQuad.SetActive(false);        }        MeshFilter meshFilter = tempQuad.AddComponent<MeshFilter>();        MeshRenderer meshRenderer = tempQuad.AddComponent<MeshRenderer>();        Material tempMat = new Material(Shader.Find("Unlit/Texture"));        meshRenderer.material = tempMat;        TextureLoadHelp._Instance.LoadTexFromUrl_AB(ab_Name + "_" + _x, texName + "."+TextureType.ToString(), 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);    }}
 |