Unity 阻止编辑器退出播放

阻止编辑器退出播放

🍔使用场景

有时候会遇到直接退出播放时导致崩溃,可能是某些插件没清理完导致的。这时可以监听播放状态的更改,及时阻止编辑器退出,然后把该销毁的先销毁了,再退出播放模式。

🌮参考

csharp 复制代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace ZYF
{
    /// <summary>
    /// 退出播放模式前先销毁所有的播放器,不然可能崩溃
    /// </summary>
    public class DestroyAllPlayersBeforeExitPlayMode
    {
        [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
        static void Init()
        {
            if (Application.isPlaying ==false || Application.isEditor ==false) {
                return;
            }
			//监听播放状态变更
            EditorApplication.playModeStateChanged += PlayModelChangedHandler;
        }

        private static void PlayModelChangedHandler(PlayModeStateChange change)
        {
            if (change == PlayModeStateChange.ExitingPlayMode)
            {
            	//移除监听,不然会进入死循环
                EditorApplication.playModeStateChanged -= PlayModelChangedHandler;
                //立即进入播放模式阻止退出
                EditorApplication.EnterPlaymode();
                //销毁资源
                DestroyAllPlayers();
                //然后再退出播放
                EditorApplication.ExitPlaymode();
            }
        }
        
        static void DestroyAllPlayers()
        {
        }
    }
}
相关推荐
●^●1 小时前
Linux 命令行与 vi/vim 编辑器完全指南
linux·编辑器·vim
Kusunoki_D4 小时前
使用 VSCode 编写 Markdown 文件
vscode·编辑器·markdown
常城5 小时前
Unity中通过TMP使用图片字体
unity·游戏引擎
惊鸿醉5 小时前
⭐Unity 开发 | 如何通过 NTP 网络时间实现精准的跨平台时间同步【附完整源码 + UI 模块 + 偏差分析】
网络·unity·游戏引擎
海鸥-w17 小时前
Unity中使用Cinemachine插件创建自由视角相机(freelookCamera)来实现第三人称漫游
数码相机·unity·游戏引擎
jayson.h19 小时前
VScode
ide·vscode·编辑器
EQ-雪梨蛋花汤20 小时前
【Unity笔记】Unity音效管理:ScriptableObject配置 + 音量控制 + 编辑器预览播放自动化实现
笔记·unity·编辑器
dustcell.1 天前
vim 命令复习
linux·编辑器·vim
承接电子控制相关项目1 天前
开发工具KEIL iar VSCODE 优缺点对比
ide·vscode·单片机·自动化·编辑器
qq_431331351 天前
Unity ML-Agents + VScode 环境搭建 Windows
windows·vscode·unity·强化学习