Unity EditorWindow - сохранение всплывающих окон при смене сцен - PullRequest
0 голосов
/ 04 февраля 2019

Итак, я делаю своего рода управление сценами в моем EditorWindow, мне было интересно, есть ли способ выдать такое же всплывающее окно, когда вы пытаетесь изменить текущую несохраненную сцену, как вы получаете обычным способом?

enter image description here

if(GUILayout.Button("Main Menu"))
{           
    EditorSceneManager.OpenScene("Assets/_Scenes/00MainMenu.unity");
}

if(GUILayout.Button("Level01"))
{
    EditorSceneManager.OpenScene("Assets/_Scenes/01Level.unity");
}

1 Ответ

0 голосов
/ 04 февраля 2019

Для всех открытых в данный момент сцен вы можете использовать, например, EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo like

if(GUILayout.Button("Main Menu"))
{   
    if(EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
    {
        // user said yes -> scene was saved
        EditorSceneManager.OpenScene("Assets/_Scenes/00MainMenu.unity");
    }
    else
    {
        // user said no -> evtl. abort or do nothing?
    }
}

if(GUILayout.Button("Level01"))
{
    if(EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
    {
        // user said yes -> scene was saved
        EditorSceneManager.OpenScene("Assets/_Scenes/01Level.unity");
    }
    else
    {
        // user said no -> evtl. abort or do nothing?
    }
}

Однако обратите внимание на небольшую подсказку Unity ^^

Примечание: в настоящее времяокно с тремя кнопками показано.Сохранение и / не сохранение / оба вызывают запись сцен.Отмена оставляет сцены нетронутыми.


В качестве альтернативы вы также можете использовать EditorSceneManager.SaveModifiedScenesIfUserWantsTo , чтобы ограничить сохранение определенным массивом сцен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...