@roma79737

Не работает функция показа и определения лучшего рекорда. Что не так?

Score.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Score : MonoBehaviour {

	public static int score = 0;
 
	void Start () {
		score = 0;
	}

	void Update () {
		GetComponent<UnityEngine.UI.Text>().text = score.ToString(); 
		PlayerPrefs.SetInt("score", score);
		PlayerPrefs.Save();
	}
}


sc.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class sc : MonoBehaviour {

	public GameObject loseBG;
	int x, y;

	void Update () {
		if (loseBG.activeSelf) {
			x = PlayerPrefs.GetInt("score");
			GetComponent<UnityEngine.UI.Text>().text = Score.score.ToString();
		}
		if (Score.score > x) {
			y = Score.score;
			PlayerPrefs.SetInt("vscore", y);
			PlayerPrefs.Save();
		}
	}
}


bsc.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class bsc : MonoBehaviour {

	public GameObject loseBG;
	int x, y, z;

	void Update () {
		if (loseBG.activeSelf) {
			x = PlayerPrefs.GetInt("vscore");
		}
		else if (Score.score > x) {
			z = Score.score;
			PlayerPrefs.SetInt("bestscore", z);
			PlayerPrefs.Save();
		}
		y = PlayerPrefs.GetInt("bestscore");
		GetComponent<UnityEngine.UI.Text>().text = y.ToString();
	}
}


Не работает функция показа и определения лучшего рекорда. Что не так?
Полагаю ошибка в коде. Заранее спасибо за ответю
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@roma79737 Автор вопроса
Сделал так.

Score.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour {

	public static int score = 0;
	public Text text;
 
	void Start () {
		score = 0;
		PlayerPrefs.SetInt("score", score);
	}

	void Update () {
		text.text = score.ToString(); 
	}
}


sc.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class sc : MonoBehaviour {

	public GameObject loseBG;
	public Text text;

	void Update () {
		if (loseBG.activeSelf) {
			text.text = Score.score.ToString();
		}
	}
}


bcs.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class bsc : MonoBehaviour {

	public GameObject loseBG;
	int Score_Player = Score.score;
	int Max_Score;
	public Text text;

	void Start () {
		Max_Score = PlayerPrefs.GetInt ("MaxScore");
	}

	void Update () {
		if (Max_Score < Score_Player) {
			Max_Score = Score_Player;
			PlayerPrefs.SetInt ("MaxScore", Max_Score);
		}
		text.text = Max_Score.ToString();
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MrMureno
@MrMureno Куратор тега Unity Game Engine
VR for all
вы не описали что именно не работает.
не отображает текст?
неправильно считает?
ругается на ошибку?

как вы вообще хотите найти ЛУЧШИЙ результат, если сравниваете на РАВЕНСТВО везде.
Score.score == x

не по существу - код ужасен.
GetComponent - не делают в Update, каждый раз искать текст...

PlayerPrefs.Save(); - тригерит запись в память устройства, на жесткий диск. Затратная операция , которую тоже не стоит делать каждый кадр.

По факту вам бы изучить что то про систему событий и перестать делать все внутри Update.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы