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.
Answer by Sgt_Spike · Feb 10, 2019 at 12:32 PM
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!
Your answer
Follow this Question
Related Questions
How to add a editing option to variables in a script in Inspector? 0 Answers
How do I see what Reference properties and Value properties I can address in GetComponent in C#? 0 Answers
How to reference custom assets from Inspector or Script 0 Answers
Script that provides data as a resource in the inspector 0 Answers
Why does rotating via viewport give different values than inspector rotations? 2 Answers