private void DrawGroup(Rect rect) { if (m_ReleaseStageData.Childs.Count == 0) { EditorGUI.LabelField(rect, "Child Data is Empty.Add a new child by btn(new)"); return; } SkillReleaseChildData childData = m_ReleaseStageData.Childs[SelectedChildIndex]; float deltaHeight = 0.0f; Rect fieldRect = new Rect(rect.x, rect.y + deltaHeight, rect.width, EditorGUIUtility.singleLineHeight); childData.ConditionType = (SkillReleaseStageCondtionType)EditorGUI.EnumPopup(fieldRect, "ConditionType", childData.ConditionType); SkillReleaseTimeLengthCondition condition = childData.TimeLengthCondition; fieldRect.y += fieldRect.height; EditorGUI.LabelField(fieldRect, "TimeLengthCondition"); fieldRect.y += fieldRect.height; Rect conditionRect = fieldRect; conditionRect.x += 12; condition.MinTime = EditorGUI.FloatField(conditionRect, "MinTime", condition.MinTime); conditionRect.y += conditionRect.height; condition.MaxTime = EditorGUI.FloatField(conditionRect, "MaxTime", condition.MaxTime); deltaHeight += EditorGUIUtility.singleLineHeight * 4; Rect groupRect = new Rect(rect.x, rect.y + deltaHeight, rect.width, (rect.height - deltaHeight) * .6f); EditorGUIUtil.DrawAreaLine(groupRect, Color.gray); groupDrawer.OnGUI(groupRect); deltaHeight += groupRect.height; Rect breakGroupRect = new Rect(rect.x, rect.y + deltaHeight, rect.width, rect.height - deltaHeight); EditorGUIUtil.DrawAreaLine(breakGroupRect, Color.gray); breakGroupDrawer.OnGUI(breakGroupRect); }
/// <summary> /// 根据所处阶段,获取对应轨道组 /// </summary> /// <param name="skillId"></param> /// <param name="stageType"></param> /// <param name="childIndex"></param> /// <returns></returns> public TrackGroup GetTrackGroup(int skillId, SkillStageType stageType, int childIndex = 0) { TrackGroup?trackGroup = null; if (stageType == SkillStageType.Begin) { trackGroup = GetSkillBeginStageData(skillId).Group; } else if (stageType == SkillStageType.Release) { SkillReleaseChildData childData = GetSkillReleaseChildData(skillId, childIndex); trackGroup = childData.Group; } else if (stageType == SkillStageType.End) { trackGroup = GetSkillEndStageData(skillId).Group; } Assert.IsTrue(trackGroup.HasValue, $"CfgEternityProxy::GetTrackGroup->data not exist.id = {skillId},stageType = {stageType} ,index = {childIndex}"); return(trackGroup.Value); }
public void OnGUI(Rect rect) { if (m_ReleaseStageData == null) { EditorGUI.HelpBox(rect, "Data is Null", MessageType.Error); return; } float deltaHeight = 0.0f; Rect fieldRect = new Rect(rect.x, rect.y + deltaHeight, rect.width, EditorGUIUtility.singleLineHeight); m_ReleaseStageData.IsScaleByTime = EditorGUI.Toggle(fieldRect, "IsScaleByTime", m_ReleaseStageData.IsScaleByTime); fieldRect.y += fieldRect.height; m_ReleaseStageData.LoopCount = EditorGUI.IntField(fieldRect, "LoopCount", m_ReleaseStageData.LoopCount); fieldRect.y += fieldRect.height; m_ReleaseStageData.IsDynamicLoopCount = EditorGUI.Toggle(fieldRect, "IsDynamicLoopCount", m_ReleaseStageData.IsDynamicLoopCount); fieldRect.y += fieldRect.height + 10; EditorGUI.LabelField(fieldRect, "Child Datas:"); deltaHeight += EditorGUIUtility.singleLineHeight * 5 + 10; Rect childRect = new Rect(rect.x, rect.y + deltaHeight, rect.width, rect.height - deltaHeight); EditorGUIUtil.DrawAreaLine(childRect, Color.gray); Rect childOperationRect = new Rect(rect.x, rect.y + deltaHeight, rect.width, 25); using (new GUILayout.AreaScope(childOperationRect)) { using (new GUILayout.HorizontalScope(GUILayout.Height(25))) { if (GUILayout.Button("New", GUILayout.Width(CHILD_OPERATION_WIDTH))) { SkillReleaseChildData childData = new SkillReleaseChildData(); m_ReleaseStageData.Childs.Add(childData); SelectedChildIndex = m_ReleaseStageData.Childs.Count - 1; } if (GUILayout.Button("Delete", GUILayout.Width(CHILD_OPERATION_WIDTH))) { if (m_ReleaseStageData.Childs.Count > 1) { m_ReleaseStageData.Childs.RemoveAt(SelectedChildIndex); int prevChildIndex = SelectedChildIndex - 1; if (prevChildIndex < 0) { prevChildIndex = 0; } SelectedChildIndex = prevChildIndex; } } GUILayout.FlexibleSpace(); if (GUILayout.Button("Prev", GUILayout.Width(CHILD_OPERATION_WIDTH))) { int prevChildIndex = SelectedChildIndex - 1; if (prevChildIndex >= 0) { SelectedChildIndex = prevChildIndex; } } GUILayout.Label("" + (SelectedChildIndex + 1) + "/" + m_ReleaseStageData.Childs.Count); if (GUILayout.Button("Next", GUILayout.Width(CHILD_OPERATION_WIDTH))) { int nextChildIndex = SelectedChildIndex + 1; if (nextChildIndex < m_ReleaseStageData.Childs.Count) { SelectedChildIndex = nextChildIndex; } } } } deltaHeight += childOperationRect.height; Rect groupRect = new Rect(rect.x, rect.y + deltaHeight, rect.width, rect.height - deltaHeight); DrawGroup(groupRect); }