Problems changing a materials color at Start()

I have an object whose material color I’d like to select from an array of colors at runtime. I’m getting huge headaches from something that should be simple. My first problem was that when I tried to do this, at runtime the material would change to “materialName (Instance)” in the Inspector and then default to black.

So, I figured I’d just create a new material at runtime and assign it to the object. This nets me this error: “NullReferenceException
UnityEngine.Material.SetColor (System.String propertyName, Color color)”

Here’s the code. The color picking works (Its exposed as public), but assigning it to the material never works. Thoughts?

//stuff for handling material fades
	private Color tempColor;
	public bool isShowing = false;
	public float alphaMatVal;
	private float maxTrans = .3f;
	public bool isVisible = false;
	public int colorID;
	public Color testColor;
	private Material thisMaterial = new Material(Shader.Find("Diffuse"));
	// Use this for initialization
	void Start () {
		soundSource = this.GetComponent<AudioSource>();
		Manager = GameObject.Find("gameManager").GetComponent<gameManager>();
		colorID = Random.Range(0,4);
		Debug.Log ("My color ID is" + colorID);
		testColor = Manager.colorArray[colorID]; //THIS SHOW JUST FINE IN THE INSPECTOR
		thisMaterial.color = testColor; //THIS GIVES THE NULL REF ERROR LISTED ABOVE
		this.gameObject.renderer.material.color = testColor; //THIS DEFAULTS TO THE "Instance" PROBLEM SEEN ABOVE

you need to initialize the var inside a function:

private Material thisMaterial;
// Use this for initialization
void Start () {
thisMaterial = new Material(Shader.Find("Diffuse"));