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(); }