using UnityEngine; using System.Collections.Generi...
Created on: August 7, 2025
Created on: August 7, 2025
using UnityEngine;
using System.Collections.Generic;
public class edificios : MonoBehaviour
{
public Dictionary<string, int[]> Edificios = new Dictionary<string, int[]>
{
{"alm0", new int[12]},
{"prod1", new int[12]},
{"prod2", new int[12]},
{"prod3", new int[12]},
{"prod4", new int[12]}
};
textpublic void AñadirEdificio() { }
}
como puedo escribir la funcion para añadir un edificio al conteo?
para que entiendas, el string guarda el tipo de edificio, y los arrays los id de cada edificio individual dentro del tipo. Por ejemplo, un campo de trigo es igual a prod 1 (string) 0 (posicion dentro del array), y si el jugador construye un campo de trigo, la funcion debe añadir +1
Aquí tienes un ejemplo sencillo de cómo podrías implementar AñadirEdificio para que:
csharppublic int AñadirEdificio(string tipo) { // 1. ¿Existe ese tipo de edificio en el diccionario? if (!Edificios.TryGetValue(tipo, out int[] ids)) { Debug.LogError($"Tipo de edificio «{tipo}» no encontrado"); return -1; // -1 = error } // 2. Buscar la primera casilla libre (valor 0) for (int i = 0; i < ids.Length; i++) { if (ids[i] == 0) // hueco disponible { ids[i] = 1; // lo marcamos como ocupado return i; // devolvemos el id asignado } } // 3. Si llegamos aquí, el array está lleno Debug.LogWarning($"No hay espacio libre para «{tipo}»"); return -1; }
csharpint idAsignado = AñadirEdificio("prod1"); if (idAsignado != -1) { // ¡Éxito! idAsignado es la posición dentro de "prod1" }
Tamaño fijo vs. dinámico
Con int[12]
solo podrás construir 12 edificios de cada tipo.
Si prefieres un límite dinámico, cambia a List<int>
:
csharppublic Dictionary<string, List<int>> Edificios = new() { { "alm0", new List<int>() }, { "prod1", new List<int>() }, ... };
y en lugar de buscar hueco libre, añadirías un elemento al final (Add(1)
).
Almacenar más información
Si necesitas guardar algo más que “presencia/ausencia” (p. ej. puntos de vida, nivel, instancia GameObject), sustituye el int
por una estructura o clase propia.
Con estos cambios tu función ya incrementará correctamente el conteo (y te devolverá el id) cada vez que el jugador construya un nuevo edificio. ¡Suerte!