How can I make an OnMouseDown method stay active?

I’m still picking up on Unity scripting and after watching the tutorial video for OnMouseDown I decided to try something a bit different. I wanted to try making a program with a single cube that would change from being red, to blue, to green, and back to red each time I clicked it.

Problem is, each time I run the script, the OnMouseDown method will only run once, so the cube just changes to blue and won’t change after that. I’ve tried looking up answers to this and have tried using coroutine and invokerepeat and tried simply calling the method in update so that it would repeatedly call the method. Each of these either gave an error or ran the method without the need for me to click at all. So it looks like I need some way to keep the method active without actually forcing it to run by itself in the code. Here’s what my code looks like right now:
public class Mouseclick : MonoBehaviour {
bool red = true;
bool blue = false;
bool green = false;

	void OnMouseDown()
	{
				if (red = true) {
						gameObject.renderer.material.color = Color.blue;
						red = false;
						blue = true;
				} else if (blue = true) {
						gameObject.renderer.material.color = Color.green;
						blue = false;
						green = true;
				} else {
						gameObject.renderer.material.color = Color.red;
						green = false;
						red = true;
				}

		}

red = true sets red to true.

you want if (red == true)

== is the comparison operator in C#