Public Variable in a Script do not show up in Inspector thus unable to assign it.

So I am learning Unity and Game Development and wrote a script for scoring using UnityEngine.UI Text.

This is my Score.cs code

using UnityEngine;
using UnityEngine.UI;


public class Score : MonoBehaviour
{

    public static Text currentScore;
    // Start is called before the first frame update
    void Start()
    {
        int initalScore = 0;
        currentScore.text = initalScore.ToString();
    }

    public static void IncreaseScore()
    {
        int Score = int.Parse(currentScore.text);
        Score++;
        currentScore.text = Score.ToString();
    }

    // Update is called once per frame
    void Update()
    {
        
    }

}

I am calling Increase Score from Obstacle Script like this:

 if(transform.position.x >= player.position.x + 5f)
        {
            transform.position = transform.position + offset;
            Score.IncreaseScore();
        }

But Inspector not showing currentScore variable thus I am unable to assign my text object to it.

Please help on what to do.

Hi, your variable is not showing because you are using ‘static’. Using static functions is not the best way to call a function from another script. In your obstacle script add ‘public GameObject name’, (where name is any name you want). This new gameobject you must assign in your inspector to the game object that contains your ‘Score’ script.

Then instead of saying ‘Score.IncreaseScore()’ in your obstacle script, instead say ‘name.GetComponent().IncreaseScore()’.

Also, make sure to remove ‘static’ from your variable and function in the Score script.

Good Luck!