Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Generación de mapa

Iniciado por dariovillar, Octubre 22, 2015, 07:48:40 PM

Tema anterior - Siguiente tema
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

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

FNK Games  Games Developer  -  Juegos realizados en Unity para iOS y Android



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.

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?

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

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.

Octubre 22, 2015, 08:06:03 PM #6 Ultima modificación: Octubre 22, 2015, 08:06:50 PM por Mantis
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

FNK Games  Games Developer  -  Juegos realizados en Unity para iOS y Android



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.

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.

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.

Etiquetas: