Ejemplo n.º 1
0
        private void OnGUI()
        {
            EditorGUILayout.BeginHorizontal();
            Color  color    = Color.green;
            string actState = "新建";

            switch (ActState)
            {
            case ActionState.New:
                break;

            case ActionState.Inherit:
                color    = Color.yellow;
                actState = "继承";
                break;

            case ActionState.Override:
                color    = Color.red;
                actState = "重写";
                break;
            }
            GUIHelper.PushColor(color);
            GUILayout.Label(actState, SirenixGUIStyles.LabelCentered, GUILayout.Width(INHERIT_WIDTH));
            GUIHelper.PopColor();

            GUILayout.Label(ActionName, SirenixGUIStyles.LabelCentered, GUILayout.Width(ACT_NAME_WIDTH));
            GUILayout.Label(IsFromOther ? "其他" : "自己", SirenixGUIStyles.LabelCentered, GUILayout.Width(ACT_SRC_WIDTH));

            bool isClipMiss = string.IsNullOrEmpty(ActionClip);

            GUIHelper.PushColor(isClipMiss ? Color.red : Color.green);
            GUILayout.Label(isClipMiss ? "Error" : ActionClip, SirenixGUIStyles.LabelCentered, GUILayout.Width(ACT_CLIP_WIDTH));
            GUIHelper.PopColor();

            GUIHelper.PushGUIPositionOffset(Vector2.up * -4f);
            if (GUILayout.Button("加载", SirenixGUIStyles.ButtonLeft))
            {
                LoadAbility();
            }
            bool canOverride = ActState == ActionState.Inherit;

            if (GUILayout.Button(canOverride? "重写" : "修改", SirenixGUIStyles.ButtonRight))
            {
                Modifier();
            }
            bool isSelected = IsSelected;

            if (isSelected)
            {
                GUIHelper.PushColor(Color.green);
            }
            if (GUILayout.Button("选择", SirenixGUIStyles.Button, GUILayout.Width(40)))
            {
                IsSelected = !IsSelected;
            }
            if (isSelected)
            {
                GUIHelper.PopColor();
            }
            GUIHelper.PopGUIPositionOffset();
            if (ActState != ActionState.Inherit)
            {
                if (SirenixEditorGUI.IconButton(EditorIcons.X))
                {
                    if (ActState == ActionState.Override)
                    {
                        ActState = ActionState.Inherit;
                        var          baseEditor = HomeConfig.Instance.GetActorEditor(_actorEditor.BaseName);
                        ActionEditor action     = null;
                        if (IsSkillAction)
                        {
                            action = baseEditor.SkillActions.Find(a => a.ActionName.Equals(ActionName));
                        }
                        else
                        {
                            action = baseEditor.GeneralActions.Find(a => a.ActionName.Equals(ActionName));
                        }
                        OtherModelName = action.OtherModelName;
                        ActionClip     = action.ActionClip;
                    }
                    else
                    {
                        if (IsSkillAction)
                        {
                            _actorEditor.SkillActions.Remove(this);
                        }
                        else
                        {
                            _actorEditor.GeneralActions.Remove(this);
                        }
                    }
                }
            }
            else
            {
                GUILayout.Label("", GUILayout.Width(18), GUILayout.Height(18));
            }

            EditorGUILayout.EndHorizontal();
        }