Room generator spawn 1 unique room

I’m working on a game that has an array of spawnable prefabs, and a chance for each of them to spawn. I have one prefab that I only want spawned once in the game. I was thinking of approaching this with gameObject.Find or some sort of trigger that detects if the same room is spawned, but I’m not sure where to start. Does anyone have any suggestions?

Ok lets start with assuming we keep the array of spawnable prefabs. Their index are assumed to be unique and each prefab unique from one another.

So, given the following presumption let is create our rooms. We can an array for each room. But you might be wondering, won’t that take up a lot more memory than needed, yes it will if you do it without thinking about the problem. Since the array of prefabs are unique with unique indexes. We can have these “room” arrays store the indexes of what that room has, and can later be reference to our array of spawnable prefabs. Now say you have multiple rooms, then you make an array of rooms, which them selves are each an array. So this is a 2D array, to think about it in simple terms.

You could use a list of list or whatever data type available for the language you are using. I suggest list because it is best to have rooms created dynamically and then your possibilities of rooms is now not constructed upon construction.


Assume array of prefab objects
[0] - Chair
[1] - Bed
[2] - Lamp

Now we can make a room
[0] - Room1:
      [0] - [0,1,2] // Room 1 contains chair, bed lamp
[1] - Room2:
      [1] - [0]     // Room 2 contains only a chair