Update only when mouse clicked on certain objects and wait for next click
Hi,
I want to run update only once each time user clicks on one of the 12 objects (buckets) I have in my scene. I have a script attached to each 12 buckets that passes a count of gems to be added to the buckets. Then I have one script that takes the value passed from one of the 12 scripts (depending on which bucket was clicked) and in the update() of that script and I want to update the gems in each bucket.
The problem I have is the update runs every frame so the gems instantiations go on and on. I know the trick to update only once using a boolean
private bool updated = false; if (!updated) {
The above will not work because it does not wait for mouseclick on object for update.
Here is a part of my code in my script on each object
void OnMouseDown() { > gemCount_Bucket1 +=1;
And in my update script:
void Update()
{
gemCount_Bucket1 = Bucketscript.gemCount_Bucket1;
gemCount_Bucket2 = Bucketscript.gemCount_Bucket2;
//Trying to do this instantiate update below only once upon mouseclick. Basically recalculate gemcount in each bucket upon mouseclick and update them once each mouseclick. Also, instead of instantiation, is there another way I can use new gemcounts and update these buckets ?
for (int i = 0; i < gemCount_Bucket1; i++)
{
list.Add(Instantiate(prefab, new Vector3((i + xPos_Bucket1) * 2.0F, -14, 0), Quaternion.identity));
}
........
So you want to instantiate a gem onclick on clicked bucket?
I have to load a default of 4 gems per bucket at game startup - I am doing this using update () as well. Then when a user clicks on bucket 2 for example, I need to make its count to zero (remove all gems from it) and update that bucket with 0 gems and add gems to some other buckets. I am able to get the logic of removing gems and adding to other buckets etc right but cannot figure out how to update my game screen using update(). And this logic goes on each time user clicks on a bucket - all its gems gets removed. I want to do this efficiently, only when user clicks a bucket. Right now my instantiate happens in update() every frame... (oh no !!)