【Unity开发】监听Scene场景事件
个人主页 阿松爱睡觉横竖醒不来你可以不屠龙但不能不磨剑目录一、前言二、监听方法一SceneManager.sceneLoaded事件二SceneManager.LoadSceneAsync回调三协程方式三、结语一、前言在游戏开发的过程中各个Scene场景之间的切换加载是必要的。但有些时候我们也需要知道场景什么时候切换加载完毕以便于在场景加载完毕的时候执行特定的函数。所以下面就聊一聊场景切换完成时机的获取方法就是监听一下场景什么时候加载完毕。二、监听方法一SceneManager.sceneLoaded事件第一个也是比较简单便捷的方法通过订阅SceneManager.sceneLoaded事件来监听场景加载完成的情况。用法比较简单看下示例usingUnityEngine;usingUnityEngine.SceneManagement;publicclassSceneLoadListener:MonoBehaviour{privatevoidOnEnable(){// 订阅场景加载完成的事件SceneManager.sceneLoadedOnSceneLoaded;}privatevoidOnDisable(){// 取消订阅场景加载完成的事件SceneManager.sceneLoaded-OnSceneLoaded;}//scene 加载的场景、mode 加载场景的模式privatevoidOnSceneLoaded(Scenescene,LoadSceneModemode){// 处理场景加载完成后的逻辑Debug.Log(场景加载完毕scene.name);}}脚本编写完毕之后将该监听的脚本挂载到任何活跃的GameObject上即可它会监听场景加载事件。当场景加载完成时OnSceneLoaded方法自动被调用。这里有一点需要注意就是脚本挂载的地方需要保持挂载了该脚本的物体持续活跃为什么这么讲假设挂载了该脚本的物体在某个场景中而且这个场景还刚好是被切换下的旧的场景一旦含有该物体的场景被切换那么场景里面的物体也同样被销毁那么该脚本就会在场景加载完成前取消订阅那么也就不会监听到场景加载完毕事件。对于这种情况有两种方法可以避免。第一个就是使用DontDestroyOnLoad()固定持久化这个方法不明白的可以看我的另一篇文章有专门的讲解第二个就是把加载场景的方式换成LoadSceneMode.Additive这样就不会关闭之前正在加载的场景。二SceneManager.LoadSceneAsync回调第二个是使用SceneManager.LoadSceneAsync来异步加载场景然后可以通过其返回的AsyncOperation对象来监听加载完成。还是先看下示例usingUnityEngine;usingUnityEngine.SceneManagement;publicclassSceneLoadAsync:MonoBehaviour{//加载场景的方法publicvoidLoadSceneAsync(stringsceneName){SceneManager.LoadSceneAsync(sceneName,LoadSceneMode.Single).completedoperation{// 在这里处理场景加载完成后的逻辑Debug.Log(场景加载完毕sceneName);};//上面是比较简洁的写法没用使用AsyncOperation类型的变量来存储返回的AsyncOperation对象AsyncOperationasyncOperationSceneManager.LoadSceneAsync(sceneName,LoadSceneMode.Single);asyncOperation.completedoperation{// 在这里处理场景加载完成后的逻辑Debug.Log(场景加载完毕sceneName);};}}看完可能会注意到回调函数中带有一个名为operation的参数这个参数代表当前完成的异步操作所以它的类型是AsyncOperation类型。那么可以从这个参数获取到什么数据呢这个参数类型(AsyncOperation)中有四个变量allowSceneActivation允许在场景准备就绪后立即激活场景。(bool类型)isDone操作是否已完成只读(bool类型)priority允许调整执行异步操作调用的顺序。(int类型)progress获取操作进度。只读(float类型)比较常用的就只有isDone和progress下面第三中方法中就用到了isDone变量一起来看下。三协程方式这种方法其实跟上面的二是类似的都是使用的SceneManager.LoadSceneAsync返回的AsyncOperation对象只不过不同的是这里没有用AsyncOperation对象中的completed事件而是检测的对象中的isDone变量。看下示例usingUnityEngine;usingUnityEngine.SceneManagement;usingSystem.Collections;publicclassSceneLoadCoroutine:MonoBehaviour{//加载场景函数publicvoidLoadScene(stringsceneName){//启动协程StartCoroutine(LoadSceneAsync(sceneName));}//协程加载IEnumeratorLoadSceneAsync(stringsceneName){AsyncOperationasyncLoadSceneManager.LoadSceneAsync(sceneName);// 等待场景加载完成while(!asyncLoad.isDone){yieldreturnnull;}// 在这里处理场景加载完成后的逻辑Debug.Log(场景加载完毕sceneName);}}LoadScene方法启动了一个协程该协程等待AsyncOperation的isDone为true指示场景加载完成。这种方法有个好处就是可以获取场景加载的进度就是前面说的progress变量可以用来做个进度条什么的。三、结语这篇的内容就到此结束了如果遇到什么问题欢迎在评论区留言或者私信下期见拜拜

相关新闻

基于Springboot + vue实现的民宿在线预定平台

基于Springboot + vue实现的民宿在线预定平台

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论🔥🔥&am…

2026/10/14 1:54:16 阅读更多 →
MuPDF JavaScript 绑定中 StructuredTextWalker 详解:遍历页面文本、图片、矢量与结构树的完整回调机制

MuPDF JavaScript 绑定中 StructuredTextWalker 详解:遍历页面文本、图片、矢量与结构树的完整回调机制

图形学图像处理 【免费下载链接】mupdf mupdf mirror 项目地址: https://gitcode.com/gh_mirrors/mu/mupdf 点击查看 免费下载 本文以 MuPDF JavaScript 绑定中的 StructuredTextWalker 接口为核心,完整讲解 StructuredText.prototype.walk() 提供的全部…

2026/10/14 1:54:16 阅读更多 →
Gym环境完全指南:核心接口、自定义环境与避坑实践

Gym环境完全指南:核心接口、自定义环境与避坑实践

很多人第一次接触强化学习,跑通第一个示例用的几乎都是Gym环境。我记得自己刚入坑那会儿,光搞明白env.step()到底该传什么、返回值又是什么,就折腾了一整天。网上教程虽然多,但大多数都在讲算法,真正把环境本身讲透的反…

2026/10/14 1:54:16 阅读更多 →

最新新闻

2026 PCSX2 开源PS2模拟器:2500款老游戏在PC上稳跑

2026 PCSX2 开源PS2模拟器:2500款老游戏在PC上稳跑

2026 PCSX2 开源PS2模拟器:2500款老游戏在PC上稳跑 【免费下载链接】pcsx2 PCSX2 - The Playstation 2 Emulator 项目地址: https://gitcode.com/GitHub_Trending/pc/pcsx2 把BIOS文件丢进一个文件夹,拖入一张光盘镜像,PS2的开机动画就…

2026/10/14 2:46:28 阅读更多 →
CDL网表与LVS实战:从语法到版图提取的避坑指南

CDL网表与LVS实战:从语法到版图提取的避坑指南

简介:电路描述语言(CDL)教学演示文稿围绕C17基准电路,系统讲解如何用该语言描述电路结构、连接关系和逻辑功能,面向数字电路课程学习者、EDA入门者及需要完成电路描述实验报告的学生。内容先梳理语法规则,将…

2026/10/14 2:46:28 阅读更多 →
仓颉标准库 std.argopt 命令行参数解析指南:parseArguments 与 ArgumentSpec 实战详解

仓颉标准库 std.argopt 命令行参数解析指南:parseArguments 与 ArgumentSpec 实战详解

人工智能AI 技能文档开发工具 【免费下载链接】DocAgent 项目地址: https://gitcode.com/Cangjie-SIG/DocAgent 点击查看 免费下载 std.argopt 是仓颉(Cangjie)标准库中负责命令行参数解析的包,它提供从命令行参数字符串中解析出…

2026/10/14 2:46:28 阅读更多 →
LinkSwift:如何快速简单地完成网盘直链解析,一键拿到 8 大网盘直链

LinkSwift:如何快速简单地完成网盘直链解析,一键拿到 8 大网盘直链

LinkSwift:如何快速简单地完成网盘直链解析,一键拿到 8 大网盘直链 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘…

2026/10/14 2:46:28 阅读更多 →
Spring Data JPA实战:实体映射、事务控制与N+1优化

Spring Data JPA实战:实体映射、事务控制与N+1优化

1. 项目概述:为什么一个“JPA实战Demo”值得花三小时重写五遍你是不是也经历过这样的场景:刚学完JPA的基础注解——Entity、Id、GeneratedValue,信心满满地新建一个User类,跑起来却报org.hibernate.MappingException: Unknown ent…

2026/10/14 2:46:28 阅读更多 →
Vue 3 轻量级数据透视表组件:支持拖拽+聚合+Excel导出

Vue 3 轻量级数据透视表组件:支持拖拽+聚合+Excel导出

简介:这是一份面向Vue.js中高级开发者的数据透视表功能实现组件包,专为需要在Web应用中快速集成交互式聚合分析表格的前端工程师设计。资源提供两个核心Vue组件:支持拖放配置行列的完整数据透视表,以及轻量级仅聚合功能的PivotTab…

2026/10/14 2:45:28 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →