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()
        {
        }
    }
}
相关推荐
不绝1913 小时前
Unity入门 :场景叠加/预制体资源包/脚本资源/生命周期函数/Inspector页面
unity·游戏引擎
在路上看风景3 小时前
20. 资源和脚本的绑定关系
unity
南草徽5 小时前
vscode小技巧预览-返回到上一级文件夹
ide·vscode·编辑器
beginner.zs6 小时前
OpenCode IDE 全面介绍与实战使用指南
ide·语言模型·编辑器
yj爆裂鼓手6 小时前
unity对象池
unity·c#
在路上看风景7 小时前
3.7 SRP Batcher
unity
吃不胖爹7 小时前
解决VSCode运行时自动保存问题
ide·vscode·编辑器
快乐觉主吖7 小时前
Unity方便修改产品名和包名的小工具
unity·游戏引擎
玉梅小洋7 小时前
Claude Code 从入门到精通(一):安装、CLI 实战与全场景集成手册
ai·大模型·编辑器·ai编程·claude
claider8 小时前
Vim User Manual 阅读笔记 usr_21.txt Go away and come back 跳转去跳转回来
笔记·编辑器·vim