Unity游戏运行时点击按钮如何实现加载下一个场景
现有代码问题说明
你写的核心加载逻辑本身是正确的,但存在3个需要注意的问题:
- 缺少必要命名空间引用:代码中使用的
SceneManager属于UnityEngine.SceneManagement命名空间,如果你脚本顶部没有加using UnityEngine.SceneManagement;,运行时会报类型找不到的错误 - 方法末尾冗余分号:方法闭合大括号后的
;属于冗余内容,虽然C#语法允许不会报错,但不符合规范建议删除 - 无边界校验逻辑:如果你当前已经是Build列表里的最后一个场景,
buildIndex + 1会超出场景索引范围,触发数组越界报错
完整功能实现步骤
- 给脚本补充命名空间引用,并且修正
PlayGame方法的逻辑,增加边界校验,参考代码如下:
using UnityEngine; using UnityEngine.SceneManagement; // 注意类名要和你的脚本文件名完全一致 public class SceneLoader : MonoBehaviour { public void PlayGame() { int nextSceneIndex = SceneManager.GetActiveScene().buildIndex + 1; // 校验下一个场景索引是否在有效范围内 if (nextSceneIndex < SceneManager.sceneCountInBuildSettings) { SceneManager.LoadScene(nextSceneIndex); } // 超出范围时你也可以在这里补充自定义逻辑,比如回到首页、弹出完成提示等 } }
- 将写好的脚本挂载到场景中始终处于激活状态的GameObject上,你可以专门新建一个名为
GameManager的空对象来挂载该脚本 - 打开Unity顶部菜单的
File > Build Settings,将项目中所有需要用到的场景,按跳转顺序拖入「Scenes In Build」列表中,列表从上到下的顺序就是场景buildIndex的排序,第一个场景的索引为0 - 找到你需要绑定点击事件的UI Button组件,在Inspector面板的
On Click ()模块点击加号,把刚才挂载了脚本的GameManager对象拖到事件的对象选择框中,然后下拉函数列表,找到对应脚本下的PlayGame方法选中即可
- 常见注意点:需要确保Button组件的
Raycast Target选项处于勾选状态,且挂载脚本的对象在点击按钮时没有被禁用,否则点击不会触发事件
内容的提问来源于stack exchange,提问作者Davian Vivian
相关产品推荐
相关产品推荐

