我是 Unity 的新手。我的问题是我在第一个场景中有一个分数,即玩家 z 的位置。我希望它使用 PlayerPrefs 将其保存到 HighScore。我有 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;
}
}
负责文本更改的高分脚本虽然我还没有在播放器首选项上工作过,但如果有人知道,也请帮助我。
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);
}
}