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()
        {
        }
    }
}
相关推荐
lrh30252 小时前
Custom SRP - Point and Spot Lights
unity·srp·render pipeline
绀目澄清3 小时前
unity UGUI 鼠标画线
unity·计算机外设·游戏引擎
作孽就得先起床4 小时前
unity pcd 二进制版 简单显示文件对象(单色)
unity·游戏引擎
return(b,a%b);8 小时前
VSCode 远程开发连接(glibc<2.28)
ide·vscode·编辑器
speop8 小时前
vscode使用tmux技巧
ide·vscode·编辑器
人工干智能8 小时前
建自己的Python项目仓库,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)
python·编辑器·github
程序员三明治10 小时前
Python编辑器的安装及配置(Pycharm、Jupyter的安装)从0带你配置,小土堆视频
python·pycharm·编辑器
ONLYOFFICE10 小时前
【技术教程】如何将文档编辑器集成至用PHP编写的Web应用程序中
编辑器·php·onlyoffice
SmalBox11 小时前
【光照】Unity[经验模型]和[物理模型]
unity·渲染
在路上看风景14 小时前
10. 游戏开发中的TCP与UDP
unity