dans un projet 2D URP 2020.3.32, j'ai une interrogation.
En mode éditeur, je construis des pièces de façon aléatoire (selon les tuto de Sunny Valley décrit dans la section Tuto), cela fonctionne bien.
Afin de m'aider à peupler ces pièces avec des props et des ennemis, j'ai matérialisé le centre de chaque pièce en y instanciant un Sprite Circle.
Évidemment, à chaque nouvelle génération du donjon il me faut effacer les anciens marqueurs, ce que je fais comme ci-dessous, mais 4 enfants résistent à la destruction :
Code initial
Code : Tout sélectionner
// Calcul de la liste des pièces -> roomsList
// ...
// Efface les marqueurs.
foreach (Transform child in parentMarkers.transform)
{
#if UNITY_EDITOR
DestroyImmediate (child.gameObject);
#else
Destroy (child.gameObject);
#endif
}
// Calcule le centre de chaque pièce.
List<Vector2Int> roomCenters = new List<Vector2Int> ();
foreach (BoundsInt room in roomsList)
{
roomCenters.Add ((Vector2Int) Vector3Int.RoundToInt (room.center));
// Place un sprite cercle au centre.
Instantiate (prefabMarker, new Vector3 (room.center.x, room.center.y, 0), Quaternion.identity, parentMarkers);
}
Code final
Code : Tout sélectionner
// Efface les marqueurs.
while (parentMarkers.transform.childCount > 0)
{
foreach (Transform child in parentMarkers.transform)
{
#if UNITY_EDITOR
DestroyImmediate (child.gameObject);
#else
Destroy (child.gameObject);
#endif
}
}