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()
        {
        }
    }
}
相关推荐
zxc2446039343 小时前
gpu instancer crowd 动画使用方式
unity
C MIKE4 小时前
unity资源下载
unity
Avalon7124 小时前
Unity中自定义协程的实现
游戏·unity·c#·游戏引擎
The_cute_cat5 小时前
Vim的初步学习
学习·编辑器·vim
jtymyxmz6 小时前
《Unity shader》10.1.5 菲涅尔反射
unity·游戏引擎
ME10106 小时前
VSCode旧版本远程开发环境配置与故障排查指南
ide·vscode·编辑器
AI视觉网奇6 小时前
vscode 设置默认环境
ide·vscode·编辑器
繁星星繁6 小时前
CMake快速上手
c语言·c++·编辑器·学习方法·visual studio code
ttod_qzstudio6 小时前
将 AntV X6 图编辑器转化为表达式引擎:Vue3 技术方案深度解析之Kimi
编辑器·antvx6
ttod_qzstudio6 小时前
基于 AntV X6 的图形化数值计算表达式编辑器设计与实现之DeepSeek
编辑器·antvx6