2017-11-04 170 views
0

午後→午前中;基本的に私は現在、 "システムの使用"と "System.Collection.Genericの使用"にあるIEquatableの問題を抱えていますが、基本的にはこのタスクの目的はユーザーがデータベースを選択して入力を行うことです。私はそれらが私がテストした基本的な文字列を介して入力を送信し、それは動作します。私の問題は純粋に視覚的であり、データもリスト内に蓄積されているように見えますが、何が起こっているのか{HERE}は最後の入力文字列を受け取り、それをコピーしてもう一度送信し、最後のいくつかの入力をコピーして新しい入力とともに送信します。これは以前の関数を受け取り、それが私が個人的にそうではないと思う再帰​​メソッドのように振る舞います。 enter image description hereEditorWindow:再帰的な出力エラーを伴う入力

internal class _Command : IEquatable<_Command> 
{ 
    public string _SQLiteCOMMAND { get; set; } 
    public int _SQLiteCOMMAND_CNT { get; set; } 
    public override string ToString() { return "Command Number : " + _SQLiteCOMMAND_CNT + "\n Command : " + _SQLiteCOMMAND; } 
    public override int GetHashCode() { return _SQLiteCOMMAND_CNT; } 
    public override bool Equals(object obj) 
    { 
     if (obj == null) return false; 
     _Command CMD_OBJ = obj as _Command; 
     if (CMD_OBJ == null) return false; 
     else return Equals(CMD_OBJ); 
    } 
    public bool Equals(_Command ETC) 
    { 
     if (ETC == null) return false; 
     return (this._SQLiteCOMMAND_CNT.Equals(ETC._SQLiteCOMMAND_CNT)); 
    } 
} 

基本的に私はここに行っていることは、セットアップではなく、一般的な新しい文字列リストの私のリストを保持しますIEquatable表です。私は試してみましたが、私はより少なく、より遅い応答を得ます。

public void _SendQueryCOMMAND(int id) 
{ 
    _Database.Add(new _Command() { _SQLiteCOMMAND = _ConsoleCommandInput, _SQLiteCOMMAND_CNT = _CMDval+1 }); 
    _ConsoleLoggerUpdate(); 
} 

これは「3」私はデータベースへの私のコマンドを送信し、それは私が3つのコマンドを送るので、もしそれが、私はコマンドを送信したと言うだろうどのようなコマンド数を私に示した出力を持っているかの抜粋であるか、私の中に個人用語の「2」。

public void _ConsoleLoggerUpdate() 
{ 
    foreach (_Command _SQLiteCommand in _Database) 
    { 
     _ConsoleCommandInput += _SQLiteCommand + "\n"; 
    } 
} 

これは、私は新しい行にそのリストの中に各フォーマットされたコマンドを追加しますforeachステートメントであるリストに自分のデータをフォーマットする方法です。

_ConsoleCommandWindow = EditorGUILayout.TextArea(_ConsoleCommandInput, GUILayout.Width(position.width - 5), GUILayout.Height(75)); 

これは私が読んで、アレイのを使用してみましたが、私のデータは私の入力データ

public void _outputConsole(int id) 
{ 
    GUILayout.Label("Current Input Text :" + _ConsoleCommandInput); 
    GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); 

} 

としてウィンドウにフォーマットされる方法これは私が出力

のための私の情報をフォーマットした方法になりますです私が考えることができる少なくとも50種類の異なる方法については、ドキュメントを読んだりコピーして貼り付けたりしても、私が現在持っているのと同じ "再帰的"な問題を抱えています。

https://msdn.microsoft.com/en-us/library/x303t819(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx

答えて

0

端に時間いじった後、私はfustrated取得し、ゼロからのスタートになりました。私は過去2日間に行った作業のほぼ2/3を廃棄してしまいましたが、実際にはすべてを削除したのでエラーが発生しました。

_CommandInputEntry = EditorGUILayout.TextField(_CommandInputEntry, GUILayout.Width(position.width - Screen.width/2.25f), GUILayout.Height(75)); 

私は「_CommandInputEntry」に文字列と「_CommandInputWindow」から式を区切るしようとしたとして、両方が完全に一つまたは他されている必要がありますときに私の入力エラーは、このすべての前にありました。

if (GUILayout.Button("Send Command")) { _CommandListEntry.Add(_CommandInputEntry); _consoleWindowMethod(1); } 

代わりに、複雑な式または私は単純なリストとかなり基本的なforeach文を使用して終了方法のいずれかのタイプを呼び出し、代わりの複雑な呼び出しシステムあなたが「コマンドを送信」ヒットの瞬間を有していると、それが追加されます現在のTextile入力をリストに追加して、メソッドに次の入力となる最近の文字列をリストに表示します。

public void _consoleWindowMethod(int id) 
{ 
    foreach (string _command in _CommandListEntry) 
    { 
     GUILayout.Label("Command :" + _command); 
     GUILayout.Box("", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(1) }); // Divider 
    } 
} 

これは私が私のリスト変数を格納してしまったか、実際にあります。非常に簡単にエンディング!

private List<string> _CommandListEntry = new List<string>(); 
関連する問題