- Home /
Prevent Additional GameObjects from instatiation
I am trying to prevent gameobjects from spawning more than once. I have 5 buttons, and each one holds a prefab. I only want the user to be able to place one of each.
void OnMouseDown() {
Vector2 rawPosition = CalculateWorldPointOfMouseClick();
Vector2 roundedPosition = SnapToGrid(rawPosition);
if (SnapOk(rawPosition) == true && CheckVacancy(rawPosition) == true) {
Instantiate(Button.selectedShip, roundedPosition, Quaternion.identity);
}
}
I have tried all of the GameObject.Find* options to try and check if they are there, no dice. (I could be implementing it wrong.. who knows)
I need to be clearer on what the problem is before I can help. just looking at this script everything seems fine. So what i understand the problem you click on button once but it instantiates game objects more than once? what do you mean by trying Gameobject.Find*?
Answer by Bioinformatizer · Jan 31, 2016 at 12:11 PM
Use a bool for each of the items you want to limit.
private bool ship1 = false;
void OnMouseDown() {
Vector2 rawPosition = CalculateWorldPointOfMouseClick();
Vector2 roundedPosition = SnapToGrid(rawPosition);
if (SnapOk(rawPosition) == true && CheckVacancy(rawPosition) == true) {
if (!ship1){
Instantiate(Button.selectedShip, roundedPosition, Quaternion.identity);
ship1 = true;
}
}
}
That way when you call the code the ship1 will be true and the next time you go to click the button it won't work because it is already true. Don't forget to make the ship1 false again if it gets destroyed etc.
Your answer

Follow this Question
Related Questions
Instantiated prefab references point to first prefab instantiated 3 Answers
GameObject variable points to instance instead of prefab when prefab gets instantiated 2 Answers
Awake() not called on script referenced directly from Project window 1 Answer
How to access a GUI element in an instantiated prefab? 0 Answers
How to find a specific clone of a prefab and access its children 0 Answers