NG_/Assets/Editor/AutoSaveBeforePlay.cs
2024-12-13 19:40:05 +08:00

49 lines
1.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
[InitializeOnLoad]
public class AutoSaveBeforePlay
{
// 静态构造函数在Unity编辑器启动时调用
static AutoSaveBeforePlay()
{
// 注册回调,当进入播放模式时触发
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
}
// 当播放模式状态发生变化时调用
private static void OnPlayModeStateChanged(PlayModeStateChange state)
{
// 如果即将进入播放模式且场景未保存,则保存场景
if (state == PlayModeStateChange.ExitingEditMode)
{
AutoSaveScene();
}
}
// 自动保存当前场景
private static void AutoSaveScene()
{
// 获取当前场景路径
string scenePath = UnityEngine.SceneManagement.SceneManager.GetActiveScene().path;
if (!string.IsNullOrEmpty(scenePath))
{
// 保存当前场景
EditorSceneManager.SaveScene(UnityEngine.SceneManagement.SceneManager.GetActiveScene());
Debug.Log("Scene auto-saved before entering play mode: " + scenePath);
}
else
{
Debug.LogWarning("Scene is not saved. Please save the scene manually.");
}
// 保存所有的资产(如 prefabs、脚本等
AssetDatabase.SaveAssets();
Debug.Log("All assets auto-saved.");
}
}