/// <summary> /// 繪製動作表 /// </summary> public void DrawTable() { _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos); int deep = 0; for (int i = 0; i < _actions.Count; i++) { ActionBase action = _actions[i]; EditorGUILayout.BeginHorizontal(); // for (int j = deep; j > 0; j--) { GUILayout.Space(10); if (j == 1) { if (action.Type != ActionType.EndLoop) { GUILayout.Label("├"); } else { GUILayout.Label("└"); } } else { GUILayout.Label("│"); } } EditorGUI.BeginChangeCheck(); action.Type = (ActionType)EditorGUILayout.EnumPopup(action.Type, GUILayout.Width(80)); if (EditorGUI.EndChangeCheck()) { switch (action.Type) { case ActionType.Train: _actions.Reset(i, new TrainAction()); break; case ActionType.Delay: _actions.Reset(i, new DelayAction()); break; case ActionType.Loop: _actions.Reset(i, new LoopAction()); break; case ActionType.EndLoop: _actions.Reset(i, new EndLoopAction()); break; case ActionType.LevelUp: _actions.Reset(i, new LevelUpAction()); break; case ActionType.Warning: _actions.Reset(i, new WarningAction()); break; case ActionType.BossWave: _actions.Reset(i, new BossWaveAction()); break; case ActionType.ChickenRain: _actions.Reset(i, new ChickenRainAction()); break; } return; } switch (action.Type) { case ActionType.Train: { EditorGUI.BeginChangeCheck(); Object newObject = NGUILayout.GameObjectField("", Prefabs.Troop[action.As <TrainAction>().Identify], true, GUILayout.Width(120)); if (EditorGUI.EndChangeCheck()) { int newID = (newObject as GameObject).GetComponent <CoreBase>().Identify; if (newID >= 10000 && newID < 20000) { action.As <TrainAction>().Identify = newID; } } action.As <TrainAction>().Amount = NGUILayout.IntField("Amount", action.As <TrainAction>().Amount, GUILayout.Width(80)); break; } case ActionType.Delay: { action.As <DelayAction>().DelayTime = EditorGUILayout.FloatField(action.As <DelayAction>().DelayTime, GUILayout.Width(80)); GUILayout.Label("s"); break; } case ActionType.Loop: { action.As <LoopAction>().LoopTimes = EditorGUILayout.IntField(action.As <LoopAction>().LoopTimes, GUILayout.Width(80)); GUILayout.Label("times"); deep++; break; } case ActionType.EndLoop: { deep--; break; } case ActionType.LevelUp: { // break; } case ActionType.Warning: { action.As <WarningAction>().WarningType = (WarningType)NGUILayout.EnumPopup("", action.As <WarningAction>().WarningType, GUILayout.Width(80)); if (action.As <WarningAction>().WarningType == WarningType.Custom) { action.As <WarningAction>().CustomText = NGUILayout.TextField("Text", action.As <WarningAction>().CustomText); } action.As <WarningAction>().TextColor = EditorGUILayout.ColorField("", action.As <WarningAction>().SelectColor(), GUILayout.Width(80)); break; } case ActionType.BossWave: { EditorGUI.BeginChangeCheck(); Object newObject = NGUILayout.GameObjectField("", Prefabs.Troop[action.As <BossWaveAction>().Identify], true, GUILayout.Width(120)); if (EditorGUI.EndChangeCheck()) { int newID = (newObject as GameObject).GetComponent <CoreBase>().Identify; if (newID >= 10000 && newID < 20000) { action.As <BossWaveAction>().Identify = newID; } } action.As <BossWaveAction>().Amount = NGUILayout.IntField("Amount", action.As <BossWaveAction>().Amount, GUILayout.Width(80)); break; } case ActionType.ChickenRain: { EditorGUI.BeginChangeCheck(); Object newObject = NGUILayout.GameObjectField("", Prefabs.Troop[action.As <ChickenRainAction>().Identify], true, GUILayout.Width(120)); if (EditorGUI.EndChangeCheck()) { int newID = (newObject as GameObject).GetComponent <CoreBase>().Identify; if (newID >= 10000 && newID < 20000) { action.As <ChickenRainAction>().Identify = newID; } } action.As <ChickenRainAction>().Amount = NGUILayout.IntField("Amount", action.As <ChickenRainAction>().Amount, GUILayout.Width(80)); break; } } DrawButtonFamily(i); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); } GUILayout.FlexibleSpace(); EditorGUILayout.EndScrollView(); }