Я новичок в Unity. Моя проблема в том, что у меня есть оценка в моей первой сцене, которая является позицией z игрока. Я хочу сохранить его в HighScore с помощью PlayerPrefs. У меня есть 2 пустых объекта с именами MenuManager и GameManager, и у них есть свои сценарии, но я не знаю, как я могу поделиться значением счета и сохранить его в PlayerPrefs. Может кто-нибудь мне помочь? Я не знаю, как мне назначить компонент, если его нет в моей сцене. Также не могли бы вы помочь мне использовать функцию сценария другой сцены. Я имею в виду, как я могу вызвать функцию игрового объекта, находящегося в другой сцене. Пожалуйста помогите. Мне нужно закончить игру.
Скрипт счета, который отслеживает позицию игроков.
using UnityEngine;
using UnityEngine.UI;
public class Score : MonoBehaviour
{
public Transform player;
public Text scoreText;
public HighScore highScore;
[HideInInspector]public static float totalScore;
void Update()
{
scoreText.text = player.position.z.ToString("0");
totalScore = player.position.z;
}
}
Скрипт High Score Script, который отвечает за изменение текста, хотя я еще не работал над настройками проигрывателя, если кто-нибудь знает, пожалуйста, помогите мне и в этом.
using UnityEngine;
using UnityEngine.UI;
public class HighScore : MonoBehaviour
{
static float floatScore;
public Text highScore;
private void Start()
{
highScore.text = PlayerPrefs.GetFloat("HighScore", 0).ToString();
}
public void highScoreFunc()
{
PlayerPrefs.SetFloat("HighScore", floatScore);
highScore.text = floatScore.ToString();
}
public void resetScore()
{
PlayerPrefs.DeleteKey("HighScore");
}
}
Скрипт функций меню с возможностью использования кнопок.
using UnityEngine;
using UnityEngine.SceneManagement;
public class MenuFunctions : MonoBehaviour
{
public void StartGame()
{
SceneManager.LoadScene(1);
}
public void quitGame()
{
Application.Quit();
}
}
Менеджер игры, который меняет сцены и перезапускает игру.
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
bool GameEnd = true;
public HighScore highScore;
public void EndGame()
{
if(GameEnd)
{
GameEnd = false;
Invoke("Restart", 1);
}
}
void Restart()
{
SceneManager.LoadScene(sceneBuildIndex: 0);
}
}
PlayerPref
для его сохранения. - person Burhanuddin Nasikwala   schedule 17.10.2020