How can I access an int variable from another script?

Hi everyone,

I have a script Clock_Time_Final.cs that changes the public int time using a coroutine.
Then I have a script rosstophermove2.cs that I need to access whatever value Clock_Time_Final.cs’s int currently is.

Here’s what I have for Clock_Time_Final.cs (which definitely is working on its own):

using UnityEngine;
using System.Collections;

public class Clock_Time_Final : MonoBehaviour {

	public int time;
	
	void Start () {
	
		StartCoroutine(TimeItself());

	}

	IEnumerator TimeItself(){
		time = 6;
		yield return new WaitForSeconds (3);
		time = 7;
		yield return new WaitForSeconds (3);
		time = 8;
	
	}
}

Then for the script trying to access it:

    using UnityEngine;
using System.Collections;

public class rosstophermove2 : MonoBehaviour {
	
	public Transform target;
	public float speed;

	public int thetime;
	public Transform clock;

	void Start () {

		Clock_Time_Final clockscript = clock.GetComponent<Clock_Time_Final> ();
		clockscript.time = thetime;

	}

	void Update () {

		if (thetime == 8){
    
    //Everything below this is irrelevant right now :)

The game runs, there are no errors or anything. And I’ve drag and dropped all the correct transforms in the correct places… it’s just that the rosstophermove2.cs script stays as 0 whilst the time int is definitely changing with Clock_Time_Final.cs.

Any ideas what I’ve done wrong?

Thanks very much,
Aaron

rosstophermove2.thetime is staying 0 because it’s never assigned anywhere.

clockscript.time = thetime;

^This is setting time in the clockscript, which isn’t doing much, since clockscript will change time in the coroutine. I think you meant:

void  Update() {
    thetime = clockscript.time;
    if (thetime == 8) {

But then, why have two variables store the same value? Wouldn’t it better to use one? I mean replace thetime with clockscript.time:

void Update () {
    if (clockscript.time == 8) {