public List <MapItem> mapItems;                //Uma lista pra ter controle sobre todos os tiles do mapa.

    public void GenerateGrid()                     //Esse método é o que cria o mapa
    {
        foreach (MapItem g in mapItems)            //Se você gerar o mapa 2 vezes, essa parte do código vai destruir os sprites antes de faze-los de novo.
        //Caso contrário você geraria 200 sprites, depois mais 200, e mais 200, e aí caga tudo.
        {
            Destroy(g.gameObject);
        }

        mapItems.Clear();

        //Aqui o mapa tá sendo criado. Varre x e y
        for (int i = 0; i < gridSize.x; i++)
        {
            for (int j = 0; j < gridSize.y; j++)
            {
                //Instancia o prefab, posiciona ele.
                //o sprite 1x1 fica na posicao 0, 0. o 1x2 fica na posicao 0, 0.46
                //o sprite 2x2 fica na posicao 0.46, 0.46 e assim vai.
                MapItem mapItem = GameObject.Instantiate(mapItemPrefab, new Vector2(i * pixelSize, j * pixelSize), Quaternion.identity);
                mapItem.transform.parent = transform;   //coloco todos os sprites gerados dentro dum objeto, pra deixar organizado.
                mapItems.Add(mapItem);                  //adiciono à lista de referencias
                mapItem.ConfigureSelf();                // chamo o método que vai trocar a sprite (colocar a sprite de porta no item que é do tipo porta
                //colocar sprite de parede no item que é do tipo parede, etc.
                //Depois veja o código MapItem pra ver como isso é feito. Ele também tem um código de editor, o _editorMapItem
            }
        }
    }
Beispiel #2
0
    //Mesmo esquema do _editorMapGenerator.

    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        MapItem mapItem = (MapItem)target;

        if (GUILayout.Button("Configure Self"))
        {
            mapItem.ConfigureSelf();
        }
    }