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()
        {
        }
    }
}
相关推荐
_oP_i5 分钟前
unity webgl部署到iis报错
unity
Go_Accepted7 分钟前
Unity全局雾效
unity
向宇it14 分钟前
【从零开始入门unity游戏开发之——C#篇24】C#面向对象继承——万物之父(object)、装箱和拆箱、sealed 密封类
java·开发语言·unity·c#·游戏引擎
半糖11221 小时前
【VSCode】常用插件汇总
vscode·编辑器
cnnews1 小时前
在vscode中的ESP-IDF插件中使用Arduino框架作为组件
ide·vscode·编辑器
乐闻x2 小时前
VSCode 插件开发实战(三):插件配置项自定义设置
ide·vscode·编辑器
每日出拳老爷子3 小时前
【图形渲染】【Unity Shader】【Nvidia CG】有用的参考资料链接
unity·游戏引擎·图形渲染
北海65164 小时前
Dots 常用操作
unity
YY-nb12 小时前
Unity Apple Vision Pro 开发教程:物体识别跟踪
unity·游戏引擎·apple vision pro
Cool-浩12 小时前
Unity 开发Apple Vision Pro物体识别追踪ObjectTracking
unity·ar·apple vision pro·mr·物体识别·vision pro教程·objecttracking