C# 我如何通过Unity中的两个场景分享分数
我是团结的新人。我的问题是,在我的第一个场景中,我有一个分数,那就是球员的z位置。我希望它使用PlayerPrefs将其保存到最高分。我有两个名为MenuManager和GameManager的空对象,它们有自己的脚本,但我不知道如何共享分数值并将其保存在PlayerPrefs中。有人能帮我吗?如果组件不在场景中,我不知道如何指定它。也可以请你帮我使用不同场景的脚本功能。我的意思是,如何调用其他场景中游戏对象的函数。请帮帮我。我需要完成我的比赛 记录球员位置的记分脚本C# 我如何通过Unity中的两个场景分享分数,c#,unity3d,scene-manager,C#,Unity3d,Scene Manager,我是团结的新人。我的问题是,在我的第一个场景中,我有一个分数,那就是球员的z位置。我希望它使用PlayerPrefs将其保存到最高分。我有两个名为MenuManager和GameManager的空对象,它们有自己的脚本,但我不知道如何共享分数值并将其保存在PlayerPrefs中。有人能帮我吗?如果组件不在场景中,我不知道如何指定它。也可以请你帮我使用不同场景的脚本功能。我的意思是,如何调用其他场景中游戏对象的函数。请帮帮我。我需要完成我的比赛 记录球员位置的记分脚本 using UnityEn
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;
}
}
高分脚本负责文本更改,虽然我还没有在播放器prefs上工作过,但如果有人知道,请在这方面也帮助我
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);
}
}
说明:只需创建一个类(非Mono行为)并使用静态变量来保存分数,这些分数可以在多个场景中访问
就PlayerPref而言,最好使用二进制文件
这是一个很好的解释。嘿!这就是你要找的。你可能还想在你的游戏管理器中实现。我该怎么做?你有什么建议吗?我真的想与两个场景分享这个值,然后我想启用一个脚本,这样我就可以将它放在
PlayerPref
部分来存储它。汉克斯兄弟,我真的做到了。我制作了一个通用的记分脚本,在这里我创建了一个静态变量,我在不同场景的两个游戏对象上使用了这个脚本。所以我取了变量,从另一个脚本中取了分数,然后将它们添加到player prefsokay中,实际上你也不能将这样的数据脚本添加到任何对象中。它仍然可以工作,因为它使用静态变量。
class ScoreKeeper{
public static float HighScore;
}
//where you update player score
ScoreKeeper.HighScore= 10;//Score Value
//Where you want to fetch score
Debug.Log(ScoreKeeper.HighScore);