Unity - 单击重新启动按钮后如何重新启动乐谱?
Posted
技术标签:
【中文标题】Unity - 单击重新启动按钮后如何重新启动乐谱?【英文标题】:Unity - How can I restart the score once the restart button is clicked? 【发布时间】:2021-07-21 02:51:05 【问题描述】:我在正在开发的游戏中遇到“问题”。当角色因与敌人碰撞或触发游戏对象而死亡时,它会显示一个游戏结束屏幕,其中包含一个“重试”按钮以重新开始游戏,但一旦单击重新开始按钮,从上一场比赛中收集的分数仍然存在.
我该如何解决这个问题?谢谢你的帮助!!
GameOver C# 脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class CS_GameOverMenu : MonoBehaviour
public void RestartButton()
SceneManager.LoadScene("Level 1");
Debug.Log("Game open");
public void MenuButton()
SceneManager.LoadScene("MainMenu");
Debug.Log("Main Menu open");
public void ExitButton()
Application.Quit();
Debug.Log("Game closed");
//public void QuitButton()
//
// Application.Quit();
//Debug.Log("Game closed");
【问题讨论】:
你是如何保存你的分数的?你在使用 playerprefs 吗? 是的,我使用播放器预制件收集食物以获取分数。我还有一个收集脚本,允许玩家收集食物以获得分数,调用另一个名为 Score 的脚本。实际上,现在的问题是显示游戏结束屏幕后的重新启动按钮。当我点击重试时,之前的分数仍然存在。我不确定我是否必须通过脚本或其他地方在游戏中编写任何代码。 @TEEBQNE 你的分数是静态的吗?你是如何写入分数变量的?您是否使用 playerprefs 或 json/binary 将分数保存在某处。由于您的设置方式,它一直保持不变。如果您让我知道此信息,我可以提供帮助 具体一点,能不能分享一下玩家收集食物后分数增加的代码? 是的。分数是静态整数。我不确定你保存分数是什么意思。我在得分游戏对象中没有任何玩家预制件。只有 scoreText。 【参考方案1】:由于您有一个静态字段,因此即使在重置后,此数据也会在游戏仍在运行时保留。在你的 Reset
函数里面放类似这样的代码。
如果您不想按名称抓取对象,请使用此 sn-p。
public void RestartButton()
ScoringSystem.theScore = 0;
SceneManager.LoadScene("Level 1");
Debug.Log("Game open");
您只需在重新加载场景时将分数设置回 0,因为您拥有的值被标记为静态。
【讨论】:
我收到此错误是由于静态问题。我不知道如何解决这个问题。 imgur.com/BhR1aor【参考方案2】:您可以访问 Player 对象(或任何保存分数的对象)并将变量设置为 0(为此它必须是公共的)。
它会像这样工作:
scoreGameObject.getComponent<"ScriptName">().scoreValue = 0
【讨论】:
我有点困惑。对不起,我还是个初学者。我应该把那行代码放在哪里?谢谢!【参考方案3】:获取分数类/文件并重置分数
public void RestartButton()
GameObjectWithScoreFile.GetComponent<ScoreClass>().Score = 0; // Make sure the Score var is public
SceneManager.LoadScene("Level 1");
Debug.Log("Game open");
如果因为变量不是静态的而出现错误,只需将其设为静态即可。
示例:
public static int Score = 0;
【讨论】:
如果由于某种原因您有多个实例,只需获取您要重置的实例并重置它。以上是关于Unity - 单击重新启动按钮后如何重新启动乐谱?的主要内容,如果未能解决你的问题,请参考以下文章
重新启动后,按钮单击时,小组件onUpdate未设置pendingIntent
在 Activity 内部,如何暂停 for 循环以调用片段,然后在按钮单击片段后恢复循环以重新开始