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

Unity按钮未点击就自动加载下一场景的代码错误排查

错误原因

你把场景跳转逻辑写在了MonoBehaviour的Start()生命周期方法里,这是导致场景自动加载的核心原因:

  • Unity会在脚本实例第一次启用、所在物体加载完成后自动调用Start()方法,执行时机是进入播放模式、当前场景加载完成的第一帧,完全不需要触发任何按钮点击操作,所以你一进播放模式就会自动执行SceneManager.LoadScene逻辑跳转到下一个场景。
  • 你没有编写专门供按钮点击触发的公开方法,也没有给UI按钮的OnClick事件绑定对应回调,本质上根本没把跳转逻辑和按钮点击行为关联起来。
修复方案
  • 把场景加载逻辑从Start()方法中移出,单独声明为public修饰的自定义方法,只有这样外部(比如UI按钮的点击事件)才能调用到这段逻辑。
  • 补充索引边界判断:如果当前场景已经是Build Settings列表里的最后一个场景,直接+1会得到不存在的场景索引,触发运行时报错,需要提前拦截。
  • 回到Unity编辑器完成事件绑定:选中你制作的UI按钮,在Inspector面板找到Button组件的On Click ()事件区域,点击+号新增事件槽,把挂载了Menu脚本的游戏对象拖到事件槽的物体引用框里,下拉选择你写的自定义跳转方法,这样点击按钮时才会触发跳转。
修复后参考代码
using UnityEngine;
using UnityEngine.SceneManagement;

public class Menu : MonoBehaviour
{
    /// <summary>
    /// 绑定到UI按钮点击事件,加载下一个场景
    /// </summary>
    public void LoadNextScene()
    {
        int currentIndex = SceneManager.GetActiveScene().buildIndex;
        // 校验下一个场景索引是否合法
        if (currentIndex < SceneManager.sceneCountInBuildSettings - 1)
        {
            SceneManager.LoadScene(currentIndex + 1);
        }
        else
        {
            Debug.LogWarning("当前为Build Settings配置的最后一个场景,无后续场景可加载");
        }
    }
}

补充提示:绑定完事件后可以先在编辑器里测试,确认点击按钮才会触发跳转,再打包运行。如果点击没反应,优先检查脚本是否正确挂载到场景物体上、OnClick事件的引用和方法选择是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:01:03