Question about funtions

I’m trying to build a puzzle game which matches colors.
As you can see below I have some green objects that will get destroyed if they match with objects of the same color.
My question is how would I stop this from happening when the scene first loads versus when a player places a new object to match others.

var lants : GameObject[];
var otherClip: AudioSource;
function Update() {

//Lantern object locator
var L1 = GameObject.Find("Lantern1");
var L2 = GameObject.Find("Lantern2");
var L3 = GameObject.Find("Lantern3");
var L4 = GameObject.Find("Lantern4");
var L5 = GameObject.Find("Lantern5");
var L6 = GameObject.Find("Lantern6");

//Array index
lants[0]=L1;
lants[1]=L2;
lants[2]=L3;
lants[3]=L4;
lants[4]=L5;
lants[5]=L6;

//if statments for green....................................................................................................................................................................................................................................
	if ((L1.renderer.material.GetColor("_Color") == Color.green)(L2.renderer.material.GetColor("_Color") == Color.green)
	(L3.renderer.material.GetColor("_Color") == Color.green)){
				Destroy(L1);
				Destroy(L2);
				Destroy(L3);
				otherClip.audio.Play();
				}
				if((L1.renderer.material.GetColor("_Color") == Color.green)(L2.renderer.material.GetColor("_Color") == Color.green)
				(L3.renderer.material.GetColor("_Color") == Color.green)(L4.renderer.material.GetColor("_Color") == Color.green)){
						Destroy(L1);
						Destroy(L2);
						Destroy(L3);
						Destroy(L4);
						otherClip.audio.Play();
						}
						if((L1.renderer.material.GetColor("_Color") == Color.green)(L2.renderer.material.GetColor("_Color") == Color.green)
						(L3.renderer.material.GetColor("_Color") == Color.green)(L4.renderer.material.GetColor("_Color") == Color.green)
						(L5.renderer.material.GetColor("_Color") == Color.green)){
							Destroy(L1);
							Destroy(L2);
							Destroy(L3);
							Destroy(L4);
							Destroy(L5);
							otherClip.audio.Play();
							}
							if((L1.renderer.material.GetColor("_Color") == Color.green)(L2.renderer.material.GetColor("_Color") == Color.green)
							(L3.renderer.material.GetColor("_Color") == Color.green)(L4.renderer.material.GetColor("_Color") == Color.green)
							(L5.renderer.material.GetColor("_Color") == Color.green)(L6.renderer.material.GetColor("_Color") == Color.green)){
							Destroy(L1);
							Destroy(L2);
							Destroy(L3);
							Destroy(L4);
							Destroy(L5);
							Destroy(L6);
							otherClip.audio.Play();
							}
							
if ((L2.renderer.material.GetColor("_Color") == Color.green)(L3.renderer.material.GetColor("_Color") == Color.green)
	(L4.renderer.material.GetColor("_Color") == Color.green)){
				Destroy(L2);
				Destroy(L3);
				Destroy(L4);
				otherClip.audio.Play();
				}
				if((L2.renderer.material.GetColor("_Color") == Color.green)(L3.renderer.material.GetColor("_Color") == Color.green)
				(L4.renderer.material.GetColor("_Color") == Color.green)(L5.renderer.material.GetColor("_Color") == Color.green)){
						Destroy(L2);
						Destroy(L3);
						Destroy(L4);
						Destroy(L5);
						otherClip.audio.Play();
						}
						if((L2.renderer.material.GetColor("_Color") == Color.green)(L3.renderer.material.GetColor("_Color") == Color.green)
						(L4.renderer.material.GetColor("_Color") == Color.green)(L5.renderer.material.GetColor("_Color") == Color.green)
						(L6.renderer.material.GetColor("_Color") == Color.green)){
							Destroy(L2);
							Destroy(L3);
							Destroy(L4);
							Destroy(L5);
							Destroy(L6);
							otherClip.audio.Play();
							}

if ((L3.renderer.material.GetColor("_Color") == Color.green)(L4.renderer.material.GetColor("_Color") == Color.green)
	(L5.renderer.material.GetColor("_Color") == Color.green)){
				Destroy(L3);
				Destroy(L4);
				Destroy(L5);
				otherClip.audio.Play();
				}
				if((L3.renderer.material.GetColor("_Color") == Color.green)(L4.renderer.material.GetColor("_Color") == Color.green)
				(L5.renderer.material.GetColor("_Color") == Color.green)(L6.renderer.material.GetColor("_Color") == Color.green)){
						Destroy(L3);
						Destroy(L4);
						Destroy(L5);
						Destroy(L6);
						otherClip.audio.Play();
						}

if ((L4.renderer.material.GetColor("_Color") == Color.green)(L5.renderer.material.GetColor("_Color") == Color.green)
	(L6.renderer.material.GetColor("_Color") == Color.green)){
				Destroy(L4);
				Destroy(L5);
				Destroy(L6);
				otherClip.audio.Play();
				}
//End green statments.....................................................................................................................................................................................................................................................................

I don’t understand :

  • the rules of your games.
  • your code (you have an astonishing number of if, it blows my mind).

After hearing that, I may try being more useful to you.

Well the rules are simple. You match colors 3 or more in order to gain points. Sorry if I seem a bit newbish. I’ve been trying to understand how I can load the board without the colors matching automatically. I’m not sure if this helps as I am uber new. :cry:

Your code is within the update function. Therefore your colors will be matching not just at startup, but 30 times or more every second.

Move your ‘matching’ logic out of update, and trigger it only when the user clicks on a piece, or otherwise appropriate interaction for your game.

Additionally, setting up your scene, such as GameObject.Find() for your ‘lanterns’ should be done only once in Start(). There’s no need to do that 30fps+ either.

So I would use something like function OnMouseDown()
for my color matching and to set up my game I should use function Start()?

Correct!

Thanks! I’m starting to understand a lil better now,