You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity开发:达到特定分数时切换场景的实现方法问询

Unity选择题游戏分数触发场景切换实现方案

前置准备

  • 打开Unity的File > Build Settings,把你的胜利场景(比如WinScene)和失败场景(比如LoseScene)添加到场景列表里,否则切换会失败。
  • 确保脚本里导入UnityEngine.SceneManagement命名空间,这是场景切换的核心依赖。

核心代码实现

创建一个名为ScoreManager的C#脚本,用单例模式统一管理分数,同时自动检测分数阈值触发场景切换:

using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class ScoreManager : MonoBehaviour
{
    // 单例实例,方便其他脚本直接调用
    public static ScoreManager Instance;

    // 当前分数
    private int currentScore = 0;
    // 胜利分数阈值
    [SerializeField] private int winScore = 30;
    // 失败分数阈值(这里是0)
    [SerializeField] private int loseScore = 0;

    // 可选:绑定UI文本显示分数
    [SerializeField] private Text scoreText;

    void Awake()
    {
        // 单例初始化,确保场景中只有一个ScoreManager
        if (Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject); // 可选:跨场景保留分数管理
        }
        else
        {
            Destroy(gameObject);
        }
    }

    // 加分方法,外部脚本调用这个来增加分数
    public void AddScore(int amount)
    {
        currentScore += amount;
        UpdateScoreUI();
        CheckScoreThreshold();
    }

    // 减分方法,外部脚本调用这个来减少分数
    public void SubtractScore(int amount)
    {
        currentScore -= amount;
        // 防止分数低于0(可选,根据需求调整)
        currentScore = Mathf.Max(currentScore, 0);
        UpdateScoreUI();
        CheckScoreThreshold();
    }

    // 更新UI显示分数
    private void UpdateScoreUI()
    {
        if (scoreText != null)
        {
            scoreText.text = $"分数: {currentScore}";
        }
    }

    // 检查分数是否达到切换场景的阈值
    private void CheckScoreThreshold()
    {
        if (currentScore >= winScore)
        {
            // 切换到胜利场景,替换成你的胜利场景名称
            SceneManager.LoadScene("WinScene");
        }
        else if (currentScore <= loseScore)
        {
            // 切换到失败场景,替换成你的失败场景名称
            SceneManager.LoadScene("LoseScene");
        }
    }
}

使用方法

  1. 在场景中创建一个空物体,命名为GameManager,把ScoreManager脚本挂上去。
  2. 如果需要显示分数,把UI的Text组件拖到脚本的scoreText字段上。
  3. 在你的答题逻辑脚本里,比如用户答对时调用:
    // 答对加10分(分数值可以自己调整)
    ScoreManager.Instance.AddScore(10);
    
    答错时调用:
    // 答错减10分(分数值可以自己调整)
    ScoreManager.Instance.SubtractScore(10);
    

注意事项

  • 场景名称必须和SceneManager.LoadScene()里的字符串完全一致,大小写敏感。
  • 如果不需要跨场景保留分数,可以去掉DontDestroyOnLoad(gameObject)这行代码。
  • 可以在Inspector面板直接修改winScore和loseScore的值,不用改代码。

内容的提问来源于stack exchange,提问作者Shamini Balu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:06:24