- Home /
Setting a bool is not working with objects that have already spawned..
Hi. I'll try and explain the best I can so bear with me. I have a cube prefab that spawns and I have it set so that its destroyed on mouse click and when the public bool red is true(which is set to false on the cube script). I have a button that accesses that bool and sets it to true, basically so the object can only be destroyed after clicking the button.
Everything works, as in the button sets the bool red to true but it doesn't let me destroy the existing spawned cubes, only cubes spawned after the button click.
Here's the code for the Cube prefab.
using UnityEngine;
using System.Collections;
public class CubeRed : MonoBehaviour
{
public float makeSmaller;
public bool isHit = true;
public bool red = false;
private int clickCount = 0;
void Update ()
{
if (Input.GetMouseButtonDown(0)&& red == true)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
isHit = false;
if(hit.collider.gameObject==gameObject)
{
// Sets the size of the cube when clicked.
transform.localScale += new Vector3(-makeSmaller, -makeSmaller, -makeSmaller);
// Adds to the clickCount Var
clickCount += 1;
// Sets the limit of the clickCount Var before destroying the object.
if (clickCount == 3)
{
Destroy(gameObject);
}
}
}
}
}
}
The code for the Button
using UnityEngine;
using System.Collections;
public class CodeRed : MonoBehaviour
{
public GameObject CubeRed;
public bool isHit = true;
// Update is called once per frame
void Update ()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
isHit = false;
if(hit.collider.gameObject==gameObject)
{
CubeRed.GetComponent<CubeRed>().red = true;
}
}
}
}
}
Again im quite new to unity and coding in general so any other pointers would be greatly appreciated.
Thanks in adavance
Answer by NoseKills · Apr 02, 2015 at 07:53 AM
What is public GameObject CubeRed;
? Is it the same Prefab you are using to instantiate the spawning cube(s)? If you instantiate a new Cube from it, the cloned cube is in no way magically connected to the original CubeRed
, so setting red on the original Cube doesn't change anything on the clone(s) afterwards. On the other hand if you change the original Cube (press the button first) and then instantiate, the clones will have the changed settings.
It would make more sense to check the button's state when destroying each cube. Or else you have to loop through all created cubes and set red to true on each when you press the buttton.
Your answer
Follow this Question
Related Questions
JS to C# converting issues.. 1 Answer
How to Spawn objects at a certain score. 1 Answer
How to give a speed to random spawned object? 1 Answer
Respawn destroyed object 1 Answer
Trigger...Spawn...Destroy 1 Answer