public override void OnInspectorGUI() { m_Target.AttackType = (AttackType)EditorGUILayout.EnumPopup("AttackType", m_Target.AttackType); NGUILayout.ShowProperty(target, "LockedAgent"); if (m_Target.AttackType != AttackType.Normal) { EditorGUILayout.Space(); NGUILayout.ShowProperty(target, "InstantiateObject"); } }
/// <summary> /// 繪製資料表 /// </summary> /// <param name="dataType">目標資料</param> private void ShowTable(DataType[] dataType) { _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos); for (int i = 0; i < _dataTable.Count; i++) { EditorGUILayout.BeginHorizontal(); for (int j = 0; j < _dataTable[i].Length; j++) { switch (dataType[j]) { case DataType.Lock: NGUILayout.ReadOnlyField(_tableFieldName[j], _dataTable[i][j].ConvertTo <string>()); break; case DataType.String: _dataTable[i][j] = NGUILayout.TextField(_tableFieldName[j], _dataTable[i][j].ConvertTo <string>()); break; case DataType.Int: _dataTable[i][j] = NGUILayout.IntField(_tableFieldName[j], _dataTable[i][j].ConvertTo <int>()); break; case DataType.Float: _dataTable[i][j] = NGUILayout.FloatField(_tableFieldName[j], _dataTable[i][j].ConvertTo <float>()); break; case DataType.AgentType: _dataTable[i][j] = NGUILayout.EnumPopup(_tableFieldName[j], (AgentType)_dataTable[i][j].ConvertTo <int>()); break; case DataType.AgentTypeFlags: _dataTable[i][j] = NGUILayout.EnumFlagsPopup(_tableFieldName[j], (AgentType)_dataTable[i][j].ConvertTo <int>()); break; case DataType.AgentSpeed: _dataTable[i][j] = NGUILayout.EnumPopup(_tableFieldName[j], (AgentSpeed)_dataTable[i][j].ConvertTo <int>()); break; } } if (GUILayout.Button("Save")) { new DataTable(_currentTable).UpdateRow(_dataTable[i][0].ConvertTo <int>(), _tableFieldName, _dataTable[i]); } if (GUILayout.Button("Del")) { new DataTable(_currentTable).DeleteRow(_dataTable[i][0].ConvertTo <int>()); _dataTable.RemoveAt(i); } EditorGUILayout.EndHorizontal(); } AddButton(); EditorGUILayout.EndScrollView(); }
/// <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(); }