Другое решение, если вы хотите сохранить его как переменную:
void GetScore()
{
int scoreTask = scoreScript.ScoreTask;
// ^^^ because we are "declaring" or creating the variable, we have to specify what
// type of variable it is. That is the only time we have to do that.
if (timeLeft == 0 && scoreTask != 0)
Application.LoadLevel("GameOver");
}
Другой вариант:
private int ScoreTest { get { return scoreScript.ScoreTask; } }
// ^^^ This is a property, and is effectively a function.
// It's body will get called everytime someone tries to read its value
void GetScore()
{
if (timeLeft == 0 && ScoreTask != 0)
Application.LoadLevel("GameOver");
}
Преимущество перед свойством над полем состоит в том, что если бы я это сделалсохранено значение оценки в scoreTask
и scoreScript.ScoreTask
изменениях, теперь у меня неправильное значение, сохраненное в scoreTask
, потому что все, что у меня есть, - это копия исходного значения, поэтому мне придется обновить scoreTask
каждый раз, когда я хочу использовать его, чтобы убедиться, что я не использую устаревшие значения.
Тем не менее, свойства, при этом использовании, всегда будут давать наиболее актуальную стоимость без нас беспокоиться.Также:
void Test()
{
scoreScript.ScoreTask = 0;
int scoreTask = scoreScript.ScoreTask;
scoreTask = 1;
Debug.Log(scoreScript.ScoreTask); // prints 0
Debug.Log(scoreTask); // prints 1
}
Все, что мы сделали, это изменили значение copy , но не значение оригинала.Свойство, которое я показал вам, не позволяет вам фактически установить значение и выдает ошибку компиляции.Это хорошо, если ни у одного класса нет какого-либо бизнеса, устанавливающего значение.Но если бы мы сделали:
int ScoreTask
{
get { return { scoreScript.ScoreTask; }
set { scoreScript.ScoreTask = value; }
}
Теперь, если мы сделаем ScoreTask = 1;
, это фактически изменит исходное значение.