- Home /
Question by
Meridani · Nov 23, 2013 at 03:17 PM ·
instantiateprefabarraydestroy
Prefabs into array than delete them when user interacts
I am building a tower in Jenga style. If I just instantiate the prefab which is made of 3 cubes eg. one row of the tower it jsut works fine. But I am unable to destroy those clones when I want to reset the map on a keypress.
Here is the script which just generates on the first row. How is it possible to destroy the old cubes than build the exact same tower again?
using UnityEngine;
using System.Collections;
public class TowerMaker : MonoBehaviour
{
public int height = 15;
public float dist = 0.1f;
public Transform block;
GameObject[] _tower;
// Use this for initialization
void Start ()
{
BuildTower ();
}
void Update ()
{
if (Input.GetButtonDown ("Reset")) {
BuildTower ();
}
_tower = new GameObject[height];
}
void BuildTower ()
{
//float x = 10;
int i = 0;
for (float y = 0; y < (height); y++) {
if (y % 2 == 0) {
_tower [i] = Instantiate (block, new Vector3 (10f, y * 0.25f + dist, 0), Quaternion.Euler (0, 90, 0)) as GameObject;
i++;
} else {
_tower [i] = Instantiate (block, new Vector3 (10f, y * 0.25f + dist, 0), Quaternion.Euler (0, 0, 0)) as GameObject;
i++;
}
}
}
}
Comment
Answer by Meridani · Nov 24, 2013 at 12:45 PM
I have sorted out the error.
_tower [i] = (Instantiate (block, new Vector3 (10f, y * 0.25f + dist, 0), Quaternion.Euler (0, 90, 0)) as GameObject);
this line simply doesn't put the instantiated objects into the array.
void DestroyTower ()
{
//Find all objects with tag "Block"
_tower = GameObject.FindGameObjectsWithTag ("Block");
for (int i=0; i<_tower.Length; i++)
Destroy (_tower [i].gameObject);
}
this sorted out the problem.
Your answer
Follow this Question
Related Questions
Parenting an instantiated prefab. 1 Answer
Destroying Instantiated Prefab 1 Answer
how to destroy camera instatiated from prefab? 0 Answers
Can't remove instantiated prefab 0 Answers