コード例 #1
0
    private void OnLoadedScreenGUI(LoadedScreen loadedScreen)
    {
        if (GUILayout.Button("Export"))
        {
            loadedScreen.Export();
        }

        if (GUILayout.Button("Unload"))
        {
            loadedScreen.Unload();
            _loadedScreen = null;
        }
    }
コード例 #2
0
    public void OnGUI()
    {
        if (_loadedScreenCache == null && !hasSearchedForCache)
        {
            _loadedScreenCache  = GameObject.FindObjectOfType <LoadedScreenCache>();
            hasSearchedForCache = true;

            if (_loadedScreenCache != null)
            {
                _loadedScreen = new LoadedScreen(_loadedScreenCache);
            }
        }

        if (_loadedScreen == null)
        {
            OnSceneListGUI();
        }
        else
        {
            OnLoadedScreenGUI(_loadedScreen);
        }
    }
コード例 #3
0
    private void ImportScene(string path)
    {
        WindowView windowController = GameObject.FindObjectOfType <WindowView>();

        if (windowController == null)
        {
            Debug.LogError("WindowController not found in scene.");
            return;
        }

        Scene      scene            = EditorSceneManager.OpenScene(path, UnityEditor.SceneManagement.OpenSceneMode.Additive);
        Scene      activeScene      = EditorSceneManager.GetActiveScene();
        ScreenView screenController = null;

        //EditorSceneManager.MergeScenes(scene, activeScene);

        GameObject[] rootObjects = scene.GetRootGameObjects();

        foreach (GameObject rootObject in rootObjects)
        {
            screenController = rootObject.GetComponent <ScreenView>();

            if (screenController != null)
            {
                break;
            }
        }

        if (screenController == null)
        {
            Debug.LogError("ScreenController not found in loaded scene. ");
            SceneManager.UnloadSceneAsync(scene);
            return;
        }
        else
        {
            if (_loadedScreenCache == null)
            {
                GameObject cache = new GameObject("Cache");
                _loadedScreenCache = cache.AddComponent <LoadedScreenCache>();
            }

            _loadedScreen = new LoadedScreen(scene, screenController, _loadedScreenCache);
            GameObject duplicateScreen = _loadedScreen.GetDuplicateScreen();
            duplicateScreen.transform.SetParent(windowController.transform, false);

            RectTransform rectTransform = duplicateScreen.GetComponent <RectTransform>();

            if (rectTransform)
            {
                rectTransform.anchorMin = Vector2.zero;
                rectTransform.anchorMax = Vector2.one;
                rectTransform.offsetMax = Vector2.zero;
                rectTransform.offsetMin = Vector2.zero;

                rectTransform.hasChanged = false;
            }

            _loadedScreenCache.scenePath        = scene.path;
            _loadedScreenCache._duplicateScreen = duplicateScreen;

            screenController.gameObject.SetActive(false);
        }
    }