New to Unity3d - NullReferenceException

Hello everyone. I`m new to Unity3d programming and I wanted to know what`s going wrong on my code. I`ve got this error but I don`t know why actually:

NullReferenceException: Object reference not set to an instance of an object.

ChangeColor.cs

using UnityEngine;
using System.Collections;

public class ChangeColor : MonoBehaviour {

    public Color corAcesa, corApagada;
    public int numeroCubo;
    public GameManagerAula2 gameManager;

    public void OnMouseDown() {
        if(gameManager.getTurno()==1) {
            gameManager.setNumeroDoCubo(getNumeroCubo());
            StartCoroutine(acenderCor());
        }
    }

    public IEnumerator acenderCor() {

        renderer.material.color=getCorAcesa();
        yield return new WaitForSeconds(0.5f);
        renderer.material.color=getCorApagada();
    }

    public int getNumeroCubo() {
        return this.numeroCubo;
    }

    public Color getCorAcesa() {
        return this.corAcesa;
    }

    public Color getCorApagada() {
        return this.corApagada;
    }

    public void iniciaCubo() {
        renderer.material.color=this.getCorApagada();
    }

    public void resetaCubo() {
        renderer.material.color=Color.black;
    }
}

GameManagerAula2.cs

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class GameManagerAula2 : MonoBehaviour {

    public List<ChangeColor> listaCubo; //lista dos cubos
    public List<int> ordem;             //ordem dos cubos
    public int cubo;                    //cubo selecionado
    public int numeroTurno=0;           //numero do turno
    public int turno=0;                 //0=computer, 1=player

    void Start() {
        iniciaCor();
        StartCoroutine(turnoComputador());
    }

    public IEnumerator turnoComputador() {

        cubo=Random.Range(0,4);
        ordem.Add(cubo);

        //adicionar tempo a primeira jogada
        if (numeroTurno==0) {
            yield return new WaitForSeconds(1.5f);
        }

        foreach (int i in this.ordem) {
            StartCoroutine(listaCubo*.acenderCor());*
 *yield return new WaitForSeconds(1.5f);*
 *}*
 *mudaTurnoJogador();*
 *StartCoroutine(turnoJogador());*
 *yield return 0;*
 *}*
 *public IEnumerator turnoJogador() {*
 *while(cubo==-1) {*
 *yield return 0;*
 *}*
 *//acerto*
 *if(ordem[numeroTurno]==cubo) {*
 *cubo=-1;*
 *incrementaNumeroTurno();*
 *if(numeroTurno==ordem.Count) {*
 *resetaNumeroTurno();*
 *mudaTurnoComputador();*
 *StartCoroutine(turnoComputador());*
 *}*
 *else {*
 *mudaTurnoJogador();*
 *StartCoroutine(turnoJogador());*
 *}* 
 *}*
 *//erro*
 *else {*
 *resetaJogo();*
 *yield return new WaitForSeconds(2);*
 *iniciaCor();*
 *StartCoroutine(turnoComputador());*
 *}*
 *yield return 0;*
 *}*
 *public int getTurno() {*
 *return this.turno;*
 *}*
 *public void mudaTurnoComputador() {*
 *this.turno = 0;*
 *}*
 *public void mudaTurnoJogador() {*
 *this.turno = 1;*
 *}*
 *public void resetaNumeroTurno() {*
 *this.numeroTurno = 0;*
 *}*
 *public void incrementaNumeroTurno() {*
 *this.numeroTurno++;*
 *}*
 *public void setNumeroDoCubo(int numeroDoCubo) {*
 *this.cubo = numeroDoCubo;*
 *}*
 *public void iniciaCor() {*
 *for(int i=0;i<=3;i++) {*
 _listaCubo*.iniciaCubo();*_
 _*}*_
 _*}*_
 _*public void resetaCor() {*_
 _*for(int i=0;i<=3;i++) {*_
 <em>_listaCubo*.resetaCubo();*_</em>
 <em>_*}*_</em>
 <em>_*}*_</em>
 <em>_*public void resetaOrdem() {*_</em>
 <em>_*this.ordem.Clear();*_</em>
 <em>_*}*_</em>
 <em>_*public void resetaJogo() {*_</em>
 <em>_*this.mudaTurnoComputador();*_</em>
 <em>_*this.resetaOrdem();*_</em>
 <em>_*this.resetaCor();*_</em>
 <em>_*}*_</em>
<em>_*}*_</em>
<em>_*```*_</em>
<em>_*<p>I`ve got the get/set on GameManagerAula2 class. I followed an example where that would works but as I coded I just realized that something is wrong and I really don`t know why. This is no serious business work or something like that, it`s just some exercise from some Unity3d classes I`m having (but since there are some days left until next class I`m asking it here).</p>*_</em>
<em>_*<p>This is a little game where the pc chooses a random cube (4 cubes) and wait for the player to click on it. Then the pc plays again and choose the previous cube +1, (...) rinse and repeat.</p>*_</em>
<em>_*<p>I know the game isn`t ready yet but this error is freaking me out because I can`t test the click.</p>*_</em>
<em>_*<p>Thanks in advance.</p>*_</em>

Looks like you forgot to set the variables corAcesa, corApagada and/or gameManager though the inspector. Am I right?