Пример #1
0
        public static void DrawUIActionGUI(UnityEngine.Object target)
        {
            Initialize();

            // early out if no types were found
            if (uiActionTypes == null || uiActionTypes.Length == 0)
            {
                return;
            }

            var targetMonobehaviour = target as MonoBehaviour;

            GUILayout.Label(string.Empty);

            using (new EditorGUILayout.HorizontalScope())
            {
                GUILayout.Label("State", GUILayout.Width(90));
                stateIndex = EditorGUILayout.Popup(stateIndex, stateNames, GUILayout.Width(150));
            }

            using (new EditorGUILayout.HorizontalScope())
            {
                GUILayout.Label("UI Action", GUILayout.Width(90));
                uiActionIndex = EditorGUILayout.Popup(uiActionIndex, uiActionNames, GUILayout.Width(150));
            }

            // early out if we just changed drop downs and didn't actually change anything (don't want to mark scene dirty for no reason)
            if (GUI.changed)
            {
                return;
            }

            using (new EditorGUILayout.HorizontalScope())
            {
                if (GUILayout.Button("Add", GUILayout.Width(245), GUILayout.Height(14)))
                {
                    var newComponent = targetMonobehaviour.gameObject.AddComponent(uiActionTypes[uiActionIndex]) as UIAction;
                    newComponent.State     = (UIActionState)stateIndex;
                    newComponent.hideFlags = HideFlags.HideInInspector;
                }
            }

            GUILayout.Label(string.Empty);

            var uiActionComponents = targetMonobehaviour.GetComponents <UIAction>().OrderBy(x => x.State).ThenBy(x => x.Order).ToList();

            // early out so we don't draw the grid if the ui object doesn't have any actions yet
            if (uiActionComponents.Count == 0)
            {
                return;
            }

            bool orderChanged = false;

            using (new BeginGridScope(grid))
            {
                for (int i = 0; i < uiActionComponents.Count; i++)
                {
                    var uiAction = uiActionComponents[i];

                    // making sure all button actions are hidden in editor
                    uiAction.hideFlags = HideFlags.HideInInspector;

                    if (uiAction.Order != i)
                    {
                        orderChanged   = true;
                        uiAction.Order = i;
                    }

                    using (new BeginGridRowScope(grid))
                    {
                        grid.DrawLabel(uiAction.State.ToString());

                        uiAction.ActionObject = grid.DrawObject(uiAction.ActionObjectType, uiAction.ActionObject, true);

                        grid.DrawLabel(uiAction.Name);

                        uiAction.ActionValue = grid.DrawUnknownObject(uiAction.ActionValue);
                    }

                    if (grid.RowButtonPressed == GridButton.Delete)
                    {
                        GameObject.DestroyImmediate(uiAction);
                        break;
                    }
                    else if (grid.RowButtonPressed == GridButton.MoveUp && i != 0)
                    {
                        uiActionComponents[i].Order--;
                        uiActionComponents[i - 1].Order++;
                        break;
                    }
                    else if (grid.RowButtonPressed == GridButton.MoveDown && i != uiActionComponents.Count - 1)
                    {
                        uiActionComponents[i].Order++;
                        uiActionComponents[i + 1].Order--;
                        break;
                    }
                }

                GUILayout.Label(string.Empty);

                if (GUI.changed || orderChanged)
                {
                    EditorUtility.SetDirty(target);
                    EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
                }
            }
        }
Пример #2
0
        public override void OnInspectorGUI()
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            using (new BeginGridScope(grid))
            {
                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawFloat(i + 1.0f);
                    }
                }

                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawInt(i + 1);
                    }
                }

                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawBool(i % 2 == 0);
                    }
                }

                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawColor(Color.white);
                    }
                }

                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawLabel("Label " + (i + 1));
                    }
                }

                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawObject(null, true);
                    }
                }

                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawSprite(null, true);
                    }
                }

                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawString("String " + (i + 1));
                    }
                }

                using (new BeginGridRowScope(grid))
                {
                    for (int i = 0; i < ColumnCount; i++)
                    {
                        grid.DrawVector3(new Vector3(i + 1, i + 1, i + 1));
                    }
                }
            }
        }