Unity场景重复且加载状态切换异常致按钮失效,如何修复?
问题解决:Unity场景循环加载导致重复与状态切换
核心原因
你的问题是典型的场景间循环触发加载:
- 如果
UI_Manager脚本同时挂载在Scene 0(主菜单)和Scene 1(游戏主场景)的对象上,就会出现无限循环:- 启动Scene0,脚本
Start()加载Scene1 - Scene1加载完成后,其内部的
UI_Manager又会执行Start()加载Scene0 - 往复循环导致场景在加载/未加载状态跳变,按钮无法正常响应
- 启动Scene0,脚本
解决方案
- 清理重复的脚本实例:只在主菜单场景(Scene0)保留挂载了
UI_Manager的对象,游戏主场景(Scene1)中完全移除该脚本的任何实例。 - 显式指定加载模式:修改加载代码,明确使用
Single模式确保每次只保留一个场景(虽然默认是Single,但显式声明更稳妥):using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class UI_Manager : MonoBehaviour { void Start() => SceneManager.LoadScene(1, LoadSceneMode.Single); public void UI_Start() => SceneManager.LoadScene(0, LoadSceneMode.Single); public void UI_Quit() => Application.Quit(); } - 验证Build Settings配置:确保Build列表中同时包含Scene0和Scene1,且Scene0被设置为启动场景。
- 日志定位(可选):如果不确定哪个场景的脚本在触发加载,可以添加日志输出:
运行后查看Console,就能明确是哪个场景的脚本在重复执行加载逻辑。void Start() { Debug.Log("触发加载的场景:" + this.gameObject.scene.name); SceneManager.LoadScene(1, LoadSceneMode.Single); }
内容的提问来源于stack exchange,提问作者MaxF
相关产品推荐
相关产品推荐

