Ejemplo n.º 1
0
    /// <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();
    }