script GetComponent, nullReference error

So I’m messing around with a countdownTimer script for my Unity project. The Timer is attached to a GUIText GameObject in the scene and its functions are called in a seperate script, attached to a seperate GameObject.

I am using GetComponent to access the timer script. But I am ending up with a NullReferenceException: Object reference not set to an instance of an object error

countdownTimer.cs

using UnityEngine;
using System.Collections;

public class countdownTimer : MonoBehaviour
{
    //countdownTimer: methods to handle a countdown timer
    //it is always assumed that there is a guiText item available for the display output
     
    //PRIVATE MEMBERS
    private bool b_timer_active; //switch to start/stop timer
    private float fl_start_time; //start time (in seconds)
    private float fl_time_left; //time left (in seconds)
     
    //PUBLIC METHODS
    float getFlRemainingTime() { //get the time remaining on the clock
        return fl_time_left;
    }
     
    public void setTimerState(bool b_active_fp) { //set the active state of the timer
        b_timer_active = b_active_fp;
    }
     
    public void setStartTime(float fl_time_fp) { //set the starting value for the countdown
        fl_start_time = fl_time_fp;
    }
     
    void Update() {
        if (b_timer_active) { //check to see if the timer is "on"
            if (!guiText) { //check for an available GUIText component
                Debug.Log("countdownTimer needs a GUIText component!");
                enabled = false;
                return;
            } else {
                doCountdown(); //decrement the time and send value to GUIText for output
            }
        }
    }
     
    //PRIVATE METHODS
    private void doCountdown() { //
        if (fl_start_time > 0) { //make sure that we had a starting time value before conting down
            fl_time_left = fl_start_time - Time.time;
            fl_time_left = Mathf.Max(0, fl_time_left); //don't let the time fall below 0.0
            guiText.text = outReadableTime(fl_time_left); //display the time to the GUI
            if (fl_time_left == 0.0) { //if time has run out, deactivate the timer and call the followup method
                b_timer_active = false;
                guiText.text = "done!";
            }
        } else {
            Debug.Log("countdownTimer needs a value set for fl_time_left");
        }
    }
     
    private string outReadableTime(float fl_time_fp) { //format the floating point seconds to M:S
        int i_minutes;
        int i_seconds;
        int i_time;
        string s_timetext;
        i_time = Mathf.CeilToInt(fl_time_fp);
        i_minutes = i_time / 60;
        i_seconds = i_time % 60;
        s_timetext = i_minutes.ToString() + ":";
        s_timetext = s_timetext + i_seconds.ToString();
        return s_timetext;
    }
}

This is the script I tried using to test it.

MouseTest.cs

using UnityEngine;
using System.Collections;

public class MouseTest : MonoBehaviour {

    countdownTimer o_countdownTimer;

	// Use this for initialization
	void Start () {

        o_countdownTimer = GetComponent<countdownTimer>();
        o_countdownTimer.setStartTime(90.0f);
        o_countdownTimer.setTimerState(true);
	}
}

What this should do is, as soon as the game starts, the GUIText should start displaying numbers representing the countdown. However, I get an error “NullReferenceException: Object reference not set to an instance of an object” instead. What am I missing?

I think you need to find the game object before you can call the methods since they are on different game objects. So I call gui Text gameobject “TESTCON”

using UnityEngine;
using System.Collections;

public class MouseTest : MonoBehaviour {

public GameObject GO_test;
countdownTimer o_countdownTimer;

void Start () 
{
	GO_test = GameObject.Find("TESTCON");
	GO_test.GetComponent< countdownTimer >().setStartTime(90.0f);
	GO_test.GetComponent< countdownTimer >().setTimerState(true);
	
}

}