Пример #1
0
    public override void OnInspectorGUI()                        // 画 GUI
    {
        ProDraw();
        if (Target.activeConfiguration)
        {
            GUILayout.Label("游戏使用该配置".AddYellow());
        }
        else
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("游戏不是使用这个配置");
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("使用该配置"))
            {
                SMSceneConfigurationUtil.EnsureActiveConfiguration(Target, true);
                SyncBuildSettingsIfRequired();
            }
            EditorGUILayout.EndHorizontal();
        }

        MyCreate.Box(() =>
        {
            sceneListHeight = CUResizableContainer.BeginVertical(sceneListHeight);
            sceneListData   = CUListControl.SelectionList(sceneListData, scenes, sceneRenderer);
            CUResizableContainer.EndVertical();

            bool isChooseScene = !sceneListData.Empty;
            GUI.enabled        = isChooseScene;                                   // 判断有没有点击场景
            int width          = Screen.width / 3 - 10;
            MyGUI.Heng(() =>
            {
                MyGUI.Button(isChooseScene ? "关卡".AddGreen() : "关卡", width, ChangeToLevel);
                MyGUI.Button(isChooseScene ? "场景".AddOrange() : "关卡", width, ChangeToScreen);
                MyGUI.Button("Ignore", width, ChangeToIgnore);
            });
            GUI.enabled = !sceneListData.Empty && IsScreen(scenes[sceneListData.First]);// 判断点击的场景是否标记 Screen
            MyGUI.Heng(() =>
            {
                MyGUI.Button("开始场景", width, ChangeToFirstScreen);
                MyGUI.Button("关卡完成后场景", width, ChangeToFirstScreenAfterLevel);
                GUI.enabled = sceneListData.Selection.Count == 1;
                MyGUI.Button("打开", width, () =>
                {
                    OpenScene(sceneListData);
                });
            });
        });
        MyGUI.AddSpace(4);
        GUI.enabled = true;
        MyCreate.Box(() =>
        {
            levelListHeight = CUResizableContainer.BeginVertical(levelListHeight);
            levelListData   = CUListControl.SelectionList(levelListData, Target.levels, levelRenderer, "关卡");
            CUResizableContainer.EndVertical();

            GUI.enabled = !levelListData.Empty;
            MyGUI.Heng(() =>
            {
                MyGUI.AddSpace();
                MyGUI.Button("First", MoveToFirst);
                MyGUI.Button("↑", MoveUp);
                MyGUI.Button("↓", MoveDown);
                MyGUI.Button("Last", MoveToLast);
            });
            GUI.enabled = true;
        });
    }
Пример #2
0
    public void OnGUI()
    {
        EditorGUI.BeginChangeCheck();
        plan = EditorGUILayout.ObjectField(plan, typeof(UTAutomationPlan), false) as UTAutomationPlan;
        if (EditorGUI.EndChangeCheck())
        {
            RefreshInternals();
        }

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.BeginVertical();
        UTNodeEditor.NodeEditor(editorData, editorModel, GUILayout.ExpandHeight(true), GUILayout.ExpandWidth(true));

#if UTOMATE_DEMO
        if (Event.current.type == EventType.Repaint)
        {
            var lastRect = GUILayoutUtility.GetLastRect();
            var content  = new GUIContent("Demo Version");
            var size     = UTEditorResources.DemoVersionLabelStyle.CalcSize(content);
            lastRect.Set(lastRect.xMin + lastRect.width - size.x, lastRect.yMin, size.x, size.y);
            GUI.Label(lastRect, content, UTEditorResources.DemoVersionLabelStyle);
        }
#endif

        EditorGUILayout.BeginHorizontal();
        GUI.enabled = editorModel.HasPlan;
        if (GUILayout.Button("Layout"))
        {
            editorModel.RelayoutPlan();
        }
        GUI.enabled = true;
        GUILayout.FlexibleSpace();
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.Space();
        EditorGUILayout.EndVertical();

        // Inspector
        inspectorWidth = CUResizableContainer.BeginHorizontal(inspectorWidth, minInspectorWidth, 3 * minInspectorWidth, CUResizableContainer.HandlePosition.Before);
        EditorGUILayout.BeginVertical();

        editorData.inspectorScrollPosition = EditorGUILayout.BeginScrollView(editorData.inspectorScrollPosition);
        // current action.
        if (editorModel.SelectedEntry != null)
        {
            inspectorRenderer.target = editorModel.SelectedEntry;
            inspectorRenderer.OnInspectorGUI();
        }
        EditorGUILayout.EndScrollView();

        GUILayout.FlexibleSpace();

        // Render plan settings
        if (plan != null)
        {
            inspectorRenderer.target = plan;
            inspectorRenderer.OnInspectorGUI();
        }
        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        GUI.enabled = plan != null;
        if (GUILayout.Button("Run this plan", EditorStyles.miniButton))
        {
            plan.Execute();
            GUIUtility.ExitGUI();
        }
        GUI.enabled = true;
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.Space();
        EditorGUILayout.EndVertical();
        CUResizableContainer.EndHorizontal();
        // Inspector

        EditorGUILayout.EndHorizontal();

        if (UTomateRunner.Instance.IsRunning)
        {
            editorModel.HighlightedEntry = UTomateRunner.Instance.CurrentEntry;
            Repaint();
        }
        else
        {
            editorModel.HighlightedEntry = null;
        }
    }
    /// <summary>
    /// Draws the list of scenes in the inspector GUI.
    /// </summary>
    protected void SceneGUI()
    {
        sceneListHeight = CUResizableContainer.BeginVertical(sceneListHeight);
        sceneListData   = CUListControl.SelectionList(sceneListData, scenes, sceneRenderer, "Available Scenes");
        CUResizableContainer.EndVertical();

        GUI.enabled = !sceneListData.Empty;
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Level"))
        {
            ChangeToLevel();
        }
        if (GUILayout.Button("Screen"))
        {
            ChangeToScreen();
        }
        if (GUILayout.Button("Ignore"))
        {
            ChangeToIgnore();
        }
        EditorGUILayout.EndHorizontal();

        GUI.enabled = !sceneListData.Empty && IsScreen(scenes[sceneListData.First]);
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("First Screen"))
        {
            ChangeToFirstScreen();
        }
        if (GUILayout.Button("After last Level"))
        {
            ChangeToFirstScreenAfterLevel();
        }

        EditorGUILayout.EndHorizontal();
        GUI.enabled = true;
        EditorGUILayout.Space();

        levelListHeight = CUResizableContainer.BeginVertical(levelListHeight);
        levelListData   = CUListControl.SelectionList(levelListData, Target.levels, levelRenderer, "Levels");
        CUResizableContainer.EndVertical();

        GUI.enabled = !levelListData.Empty;
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("First"))
        {
            MoveToFirst();
        }
        if (GUILayout.Button("Up"))
        {
            MoveUp();
        }
        if (GUILayout.Button("Down"))
        {
            MoveDown();
        }
        if (GUILayout.Button("Last"))
        {
            MoveToLast();
        }
        EditorGUILayout.EndHorizontal();
        GUI.enabled = true;
    }
Пример #4
0
    public override void OnInspectorGUI()                        // 画 GUI
    {
        ProDraw();
        if (Target.activeConfiguration)
        {
            GUILayout.Label("游戏使用该配置".AddYellow());
        }
        else
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("游戏不是使用这个配置");
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("使用该配置"))
            {
                SMSceneConfigurationUtil.EnsureActiveConfiguration(Target, true);
                SyncBuildSettingsIfRequired();
            }
            EditorGUILayout.EndHorizontal();
        }
        int workWidth = Screen.width / 3 - 34;
        WorkflowActionEnum targetWork = Target.actionAfterGroup;
        bool isLevel = targetWork == WorkflowActionEnum.LoadNextLevel;

        MyGUI.Heng(() =>
        {
            MyGUI.Text("组结束,加载:");
            MyGUI.Button(isLevel?"[下一关卡]".AddGreen(): "下一关卡".AddLightGreen(), workWidth, () =>
            {
                if (!isLevel)
                {
                    ChangeToWorkflowAction(WorkflowActionEnum.LoadNextLevel);
                }
            });
            MyGUI.AddSpace(2);
            MyGUI.Button(isLevel ? "标记场景".AddLightGreen() : "[标记场景]".AddGreen(), workWidth, () =>
            {
                if (isLevel)
                {
                    ChangeToWorkflowAction(WorkflowActionEnum.LoadScreen);
                }
            });
            MyGUI.AddSpace();
            GUI.enabled = sceneListData.Selection.Count == 1;
            MyGUI.Button("打开", workWidth - 25, () =>
            {
                OpenScene(sceneListData);
            });
            GUI.enabled = true;
        });


        MyCreate.Box(() =>
        {
            sceneListHeight = CUResizableContainer.BeginVertical(sceneListHeight);
            sceneListData   = CUListControl.SelectionList(sceneListData, scenes, sceneRenderer);
            CUResizableContainer.EndVertical();

            bool isChooseScene = !sceneListData.Empty;
            GUI.enabled        = isChooseScene;                                   // 判断有没有点击场景
            int width          = Screen.width / 3 - 10;

            MyGUI.Heng(() =>
            {
                MyGUI.Button(isChooseScene ? "关卡".AddGreen() : "关卡", width, ChangeToLevel);
                MyGUI.Button(isChooseScene ? "场景".AddOrange() : "关卡", width, ChangeToScreen);
                MyGUI.Button("Ignore", width, ChangeToIgnore);
            });
            GUI.enabled = !sceneListData.Empty && IsScreen(scenes[sceneListData.First]);// 判断点击的场景是否标记 Screen
            MyCreate.Heng(() =>
            {
                MyGUI.Button("开始场景", width, ChangeToFirstScreen);
                MyGUI.Button("关卡完成后场景", width, ChangeToFirstScreenAfterLevel);
                GUI.enabled = GUI.enabled && Target.actionAfterGroup == WorkflowActionEnum.LoadScreen;// 是否选择了标记场景
                MyGUI.Button("完成组后场景", width, ChangeToFirstScreenAfterGroup);
            });
        });

        MyGUI.AddSpace(4);
        GUI.enabled = true;

        MyCreate.Box(() =>
        {
            levelListHeight = CUResizableContainer.BeginVertical(levelListHeight);
            EditorGUILayout.BeginHorizontal();
            groupListWidth = CUResizableContainer.BeginHorizontal(groupListWidth);
            int lastGroup  = groupListData.First;
            groupListData  = CUListControl.SelectionList(groupListData, Target.groups, groupRenderer, "组");
            if (lastGroup != groupListData.First)
            {
                levelListData.ClearSelection();
            }

            CUResizableContainer.EndHorizontal();
            GUI.enabled   = SelectedGroup != null;
            levelListData = CUListControl.SelectionList(levelListData, currentGroupLevels, levelRenderer, "关卡");
            GUI.enabled   = true;
            EditorGUILayout.EndHorizontal();
            CUResizableContainer.EndVertical();

            MyGUI.Heng(() =>
            {
                MyGUI.Button("+", AddGroup);
                GUI.enabled = !groupListData.Empty && Target.groups.Length > 1;
                MyGUI.Button("-", RemoveGroup);
                GUI.enabled = !groupListData.Empty;
                MyGUI.Button("改名", RenameGroup);
                GUI.enabled = true;
                MyGUI.AddSpace();
                GUI.enabled = !levelListData.Empty;
                MyGUI.Button("First", MoveToFirst);
                MyGUI.Button("↑", MoveUp);
                MyGUI.Button("↓", MoveDown);
                MyGUI.Button("Last", MoveToLast);
                GUI.enabled = true;
            });
        });
    }
    /// <summary>
    /// Draws the list of scenes in the inspector GUI.
    /// </summary>
    protected void SceneGUI()
    {
        SMWorkflowActionType action = (SMWorkflowActionType)EditorGUILayout.EnumPopup(new GUIContent("Action after Group", ""), Target.actionAfterGroup);

        if (action != Target.actionAfterGroup)
        {
            ChangeToWorkflowAction(action);
        }
        GUILayout.Space(5);

        sceneListHeight = CUResizableContainer.BeginVertical(sceneListHeight);
        sceneListData   = CUListControl.SelectionList(sceneListData, scenes, sceneRenderer, "Available Scenes");
        CUResizableContainer.EndVertical();

        GUI.enabled = !sceneListData.Empty && SelectedGroup != null;
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Level"))
        {
            ChangeToLevel();
        }
        GUI.enabled = !sceneListData.Empty;
        if (GUILayout.Button("Screen"))
        {
            ChangeToScreen();
        }
        if (GUILayout.Button("Ignore"))
        {
            ChangeToIgnore();
        }
        EditorGUILayout.EndHorizontal();

        GUI.enabled = !sceneListData.Empty && IsScreen(scenes[sceneListData.First]);
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("First Screen"))
        {
            ChangeToFirstScreen();
        }
        if (GUILayout.Button("After last Level"))
        {
            ChangeToFirstScreenAfterLevel();
        }

        GUI.enabled = GUI.enabled && Target.actionAfterGroup == SMWorkflowActionType.LoadScreen;
        if (GUILayout.Button("After Group"))
        {
            ChangeToFirstScreenAfterGroup();
        }

        EditorGUILayout.EndHorizontal();
        GUI.enabled = true;
        EditorGUILayout.Space();

        levelListHeight = CUResizableContainer.BeginVertical(levelListHeight);
        EditorGUILayout.BeginHorizontal();
        groupListWidth = CUResizableContainer.BeginHorizontal(groupListWidth);
        int lastGroup = groupListData.First;

        groupListData = CUListControl.SelectionList(groupListData, Target.groups, levelRenderer, "Groups");
        if (lastGroup != groupListData.First)
        {
            // group changed reset level selection
            levelListData.ClearSelection();
        }

        CUResizableContainer.EndHorizontal();
        GUI.enabled   = SelectedGroup != null;
        levelListData = CUListControl.SelectionList(levelListData, currentGroupLevels, levelRenderer, "Levels");
        GUI.enabled   = true;
        EditorGUILayout.EndHorizontal();
        CUResizableContainer.EndVertical();

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("+"))
        {
            AddGroup();
        }
        GUI.enabled = !groupListData.Empty && Target.groups.Length > 1;
        if (GUILayout.Button("-"))
        {
            RemoveGroup();
        }
        GUI.enabled = !groupListData.Empty;
        if (GUILayout.Button("Rename"))
        {
            RenameGroup();
        }
        GUI.enabled = true;
        GUILayout.FlexibleSpace();
        GUI.enabled = !levelListData.Empty;
        if (GUILayout.Button("First"))
        {
            MoveToFirst();
        }
        if (GUILayout.Button("Up"))
        {
            MoveUp();
        }
        if (GUILayout.Button("Down"))
        {
            MoveDown();
        }
        if (GUILayout.Button("Last"))
        {
            MoveToLast();
        }
        GUI.enabled = true;
        EditorGUILayout.EndHorizontal();
    }