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()
        {
        }
    }
}
相关推荐
沉默金鱼4 小时前
Unity实用技能-模型
unity·游戏引擎
阿里云云原生5 小时前
AgentRun:如何利用 AI Agent 构建现代化的舆情分析解决方案?
人工智能·unity·游戏引擎
在路上看风景6 小时前
2.8 预渲染
unity
老朱佩琪!6 小时前
Unity代理模式
unity·游戏引擎·代理模式
技术小甜甜7 小时前
【Godot】【入门】GDScript 快速上手(只讲游戏里最常用的 20% 语法)
android·游戏·编辑器·游戏引擎·godot
GDAL9 小时前
vscode 使用正则查找替换
ide·vscode·正则表达式·编辑器
拆房老料9 小时前
文档能力中台化实践:一份面向自研Office处理产品的理性技术选型说明
编辑器·开源软件
老朱佩琪!10 小时前
Unity命令模式
unity·游戏引擎·命令模式
世洋Blog11 小时前
Unity编辑器基础
unity·c#·编辑器·游戏引擎
爱喝热水的呀哈喽11 小时前
子模代数。
算法·编辑器