Jump to content
UnitySpain
dariovillar

Generación de mapa

Recommended Posts

Buenas a tod@s,

He retomado Unity3D y esoty comenzando a hacer pruebas.

Estoy generando un terreno desde código utilizando un Prefab, pero creo que no es el mejor camino, ya que no puedo hacerlo tan grande como quisiera y además dispara el consumo de procesador.

Para el Prefab estoy utilizando un Quad (Mesh Filter) y un Mesh Renderer.

Para la generación del terreno utilizo este código:

 

    public static bool Navigate = true;
    public int large = 50;
    public GameObject PreFab;
    List<GameObject> Tiles = new List<GameObject>();

    void Awake()
    {
        for (int x = 0; x < large; x++)
        {
            for (int z = 0; z < large; z++)
            {
                GameObject go = Instantiate(PreFab);
                go.transform.position = new Vector3(x, 0, z);
                go.name = "x" + x.ToString() + "z" + z.ToString();
                Tiles.Add(PreFab);
            }
        }
    }

 

¿Alguna pista para generar el mapa de modo que no me reviente el procesador?

Muchas gracias por la ayuda.

PD: hasta 100x100 el mapa es manejable, a partir de ahí empiezan los problemas

Share this post


Link to post
Share on other sites

Y por qué tantos quad? no es mejor uno grande.

100 x 100 son diez mil gameObjects en escena.  Es normal que se te ponga tonto el PC

Share this post


Link to post
Share on other sites

La idea es tener control sobre cada casilla del juego y es lo primero que se me ha ocurrido, pero estoy seguro de que existe un modo mejor de hacerlo y por eso pregunto.

Muchas gracias.

Share this post


Link to post
Share on other sites

Como dice @Mantis es un poco grande. Desconecta todos el lightning y no los marques static para empezar a probar.

Y que tienen esos prefab?

Share this post


Link to post
Share on other sites

Añade WaitForSeconds dentro del for de la x y del for de la z. Eso ayudara a que unity no pete al generar el mapa. De todos modos como ya te han dicho eso son 100.000 gameObjects en la escena y eso consume mucho

Share this post


Link to post
Share on other sites

Entendido.

Voy a probar a generar un único plano y jugaré un poco con el Tiling del material, a ver que va saliendo.

Muchas gracias a todos por la ayuda.

Share this post


Link to post
Share on other sites

Se me ocurre que puedes definir los puntos del mapa. Justamente los puntos donde estas instanciando el prefab, pero sin instanciar nada. Guardas los puntos en una matriz. de puntos Vector3.

 

Luego accedes a ellos para hacer lo que tengas que hacer, pero el mapa que sea sencillo con pocos Quads

Edited by Mantis

Share this post


Link to post
Share on other sites

Estoy haciendo pruebas con un plano y jugando con el tiling de la textura.

Además estoy capturando las coordenadas del ratón y moviendo una textura superpuesta justo encima del tile, aunque aun no funciona correctamente, pero lo conseguiré.

Una vez lo tenga, enseño el resultado.

Share this post


Link to post
Share on other sites

Puedes generar un plano único y escalarlo en función del tamaño que necesites y crear las "casillas" por código para evitar que tire tanto de procesador.

Share this post


Link to post
Share on other sites

Eso es lo que he hecho al final. He creado un plano, he cambiado el Tiling de la textura para similar las casillas y he generado un Array bidimensional para procesar cada casilla.

Ahora estoy con la cámara y luego comenzaré con el menú del juego, así voy haciendo ajustes y creando la lógica del juego.

Muchas gracias a todos por la ayuda, así da gusto preguntar.

Share this post


Link to post
Share on other sites

×
×
  • Create New...