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

Unity场景切换脚本报错求助:LevelComplete脚本问题排查

问题描述

在Unity中使用场景切换脚本时触发报错,已尝试检查脚本、UI动画绑定,以及改用SceneManager.LoadScene(name)方法,均未解决问题。相关脚本代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManager;

public class LevelComplete : MonoBehaviour
{
    public void LoadNextLevel ()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().BuildIndex + 1);
    }
}
排查与解决方案

以下是针对该问题的常见排查方向及解决办法:

  • Build Settings场景列表验证
    确保目标场景已添加到File > Build Settings的「Scenes In Build」列表中,且Build Index是连续的(比如当前场景索引为n,下一场景必须是n+1且已添加)。若使用名称加载,需保证场景名称与代码输入完全一致(Unity对场景名称大小写敏感)。

  • UI事件绑定正确性检查
    检查触发场景切换的UI按钮(或其他交互组件):

    1. 确认绑定的LevelComplete脚本所在GameObject未被禁用或销毁
    2. 确认OnClick事件中选择的方法是LevelComplete > LoadNextLevel(),而非其他同名方法
    3. 若绑定了UI动画事件,需确保动画完成后再触发场景切换,避免动画执行过程中的对象状态冲突
  • 添加日志与异常捕获定位问题
    修改脚本加入日志输出和异常捕获,直接在Console面板查看错误详情:

    using UnityEngine;
    using UnityEngine.SceneManagement;
    
    public class LevelComplete : MonoBehaviour
    {
        public void LoadNextLevel()
        {
            try
            {
                int currentIndex = SceneManager.GetActiveScene().buildIndex;
                int nextIndex = currentIndex + 1;
                Debug.Log($"当前场景索引:{currentIndex},尝试切换到索引:{nextIndex}");
                
                // 检查下一场景是否存在
                if(nextIndex >= SceneManager.sceneCountInBuildSettings)
                {
                    Debug.LogError("已无后续场景,超出Build Index范围");
                    return;
                }
                
                string nextSceneName = SceneUtility.GetScenePathByBuildIndex(nextIndex);
                nextSceneName = System.IO.Path.GetFileNameWithoutExtension(nextSceneName);
                Debug.Log("目标场景名称:" + nextSceneName);
                
                SceneManager.LoadScene(nextIndex);
            }
            catch(System.Exception e)
            {
                Debug.LogError($"场景切换失败:{e.Message}\n{e.StackTrace}");
            }
        }
    }
    

    运行后查看Console的日志信息,可直接定位是索引越界、场景未添加还是其他运行时错误。

  • 脚本挂载对象状态确认
    挂载LevelComplete脚本的GameObject必须在触发切换时处于激活状态,若为UI对象,需确保Canvas未被禁用,且交互组件未被遮挡导致点击事件未触发(可测试在Start()方法中直接调用LoadNextLevel(),验证脚本本身逻辑是否正常)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:05:17