public void DrawUI() { EditorGUILayout.BeginVertical(GUILayout.Width(WIDTH)); GUILayout.Space(layer * 10); EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(GUILayout.Width(WIDTH)); key = GetKey(); GUILayout.Box(eventType + ":layer= " + layer + ",key= " + key, GUILayout.ExpandWidth(true)); eventType = (SKILL_EVENT_TYPE)EditorGUILayout.EnumPopup("类型", eventType); time = EditorGUILayout.FloatField("触发时间", time); times = EditorGUILayout.IntField("执行次数", times); interval = EditorGUILayout.FloatField("执行间隔", interval); actionTime = EditorGUILayout.FloatField("动作时间", actionTime); DrawTypeUI(); EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(GUILayout.MaxWidth(WIDTH_LEVEL)); if (GUILayout.Button("X")) { DeleteEvent(); } if (GUILayout.Button("+")) { AddChildEvent(); } if (GUILayout.Button("←")) { LayerLeftEvent(); } if (GUILayout.Button("→")) { LayerRightEvent(); } if (GUILayout.Button("↑")) { LayerUpEvent(); } if (GUILayout.Button("↓")) { LayerDownEvent(); } if (GUILayout.Button("C")) { CopyEvent(); } EditorGUILayout.EndVertical(); for (int i = 0; i < childrenEvents.Count; ++i) { childrenEvents[i].DrawUI(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); RefreshType(); }
public static BaseSkillEvent InstSkillEvent(BinaryReader br, SkillInfo info, BaseSkillEvent parent, int layer, int index) { SKILL_EVENT_TYPE eventType = (SKILL_EVENT_TYPE)br.ReadInt32(); BaseSkillEvent bse = SkillUtils.InstanceEvent(eventType, info, parent, layer, index); bse.time = br.ReadSingle(); bse.times = br.ReadInt32(); bse.interval = br.ReadSingle(); bse.actionTime = br.ReadSingle(); bse.key = bse.GetKey(); #if UNITY_EDITOR bse.lastType = eventType; #endif return(bse); }
private void RefreshType() { if (lastType != eventType) { lastType = eventType; int index = GetParentChildrenEventList().IndexOf(this); BaseSkillEvent nbe = SkillUtils.InstanceEvent(eventType, skillInfo, parent, layer, index); for (int i = 0; i < this.childrenEvents.Count; ++i) { this.childrenEvents[i].parent = nbe; nbe.childrenEvents.Add(this.childrenEvents[i]); } DeleteEvent(); } }
public static BaseSkillEvent InstanceEvent(SKILL_EVENT_TYPE eventType, SkillInfo info, BaseSkillEvent parent, int layer, int index) { BaseSkillEvent bse = null; switch (eventType) { case SKILL_EVENT_TYPE.动作: bse = new SkillEventAction(); break; case SKILL_EVENT_TYPE.子弹: bse = new SkillEventBullet(); break; } bse.skillInfo = info; bse.parent = parent; bse.eventType = eventType; bse.layer = layer; bse.GetParentChildrenEventList().Insert(index, bse); #if UNITY_EDITOR bse.lastType = eventType; #endif return(bse); }