Есть ли способ переключиться в режим сцены из игрового режима при нажатии кнопки воспроизведения? - PullRequest
0 голосов
/ 29 августа 2018


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

enter image description here


Я в основном спрашиваю, потому что хочу сделать снимок экрана с активами, которые я загружаю на сцену.
Мой код:

using UnityEngine;
using UnityEngine.SceneManagement;

public class NewBehaviourScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
        Debug.Log("HELLO");
        var rss = AssetBundle.LoadFromFile(@"//MyFileLocation");
        Debug.Log(SceneManager.GetActiveScene().name);
        foreach (var asset in rss.LoadAllAssets<GameObject>())//<Texture2D>())
        {
            GameObject obj = Instantiate(asset, transform);
        }
        Debug.Log(transform.position);
        Application.CaptureScreenshot(@"//MyScreenshotlocation");
        Debug.Log("captured");
    }

    // Update is called once per frame
    void Update () {

    }   
}

Любая помощь приветствуется! Спасибо!

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете переключиться в любое окно с помощью функции EditorWindow.FocusWindowIfItsOpen. Чтобы переключиться в режим просмотра сцены, передайте SceneView. Вы можете использовать EditorApplication.playModeStateChanged, чтобы определить, когда вы входите в режим воспроизведения.

Это плагин редактора, который необходимо поместить в папку с именем «Редактор». Создайте скрипт с именем SceneSwitcher и скопируйте в него все, что ниже. Он должен автоматически переключиться в режим просмотра сцены при нажатии кнопки воспроизведения.

using UnityEditor;

[InitializeOnLoadAttribute]
public static class SceneSwitcher
{
    static SceneSwitcher()
    {
        EditorApplication.playModeStateChanged += LogPlayModeState;
    }

    private static void LogPlayModeState(PlayModeStateChange state)
    {
        if (state == PlayModeStateChange.EnteredPlayMode)
            SwitchToSceneView();
    }

    static void SwitchToSceneView()
    {
        EditorWindow.FocusWindowIfItsOpen<SceneView>();

        /////OR
        //SceneView sceneView = EditorWindow.GetWindow<SceneView>(); ;
        //Type type = sceneView.GetType();
        //EditorWindow.FocusWindowIfItsOpen(type);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...