I'm making a Unity3D game. I want to implement a connection between the script Timer.cs and Collide.cs, by which they exchange the variable obji. And before you mark this question as a duplicate I want to mention that have already read this tutorial. As a result of the solution provided I get the error
A namespace cannot directly contain members such as fields or methods
Can you provide a solution for exchanging information between scripts that have no element in common. I want Timer.cs to get the variable obji from Collide.cs
Timer.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Timer : MonoBehaviour { public ScoresManager ScoresManager; Text instruction; // Start is called before the first frame update void Start() { instruction = GetComponent<Text>(); InvokeRepeating("time", 0, 1); } void time() { if (timeLeft <= 0){ /* if(move.obji() <= 0){ instruction.text = "You win!"; }else{ instruction.text = "You lost!"; }*/ } else { timeLeft = timeLeft - 1; instruction.text = (timeLeft).ToString(); } } // Update is called once per frame int timeLeft = 30; void Update() { } } Collide.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Collide : MonoBehaviour { public Text txt; public int obji = -1; //this is an example, I always try to initialize my variables. void Start() { //or Awake obji = GameObject.FindGameObjectsWithTag("Enemy").Length; } void OnCollisionEnter(Collision collision) { if (collision.collider.gameObject.tag == "Enemy") { transform.localScale -= new Vector3(0.03F, 0.03F, 0.03F); Destroy(collision.collider.gameObject); obji = obji - 1; Debug.Log(obji); if ((obji) > 0) { txt.text = (obji).ToString(); } else { txt.text = "You win!"; } } } } 
