EditorWindow:输入递归输出错误

时间:2017-11-04 07:57:44

标签: c# unity3d recursion arraylist

下午 - >上午中旬;基本上我当前遇到IEquatable的问题,它位于“使用系统”和“使用System.Collection.Generic”,基本上这个任务的目的是让用户选择一个数据库并发送输入;我让他们通过我测试过的基本字符串发送输入并且它有效。虽然我的问题纯粹是视觉问题,但数据似乎也在列表中积累;所以发生了什么{HERE}获取最后一个输入字符串并复制它并再次发送它并复制最后几个输入并使用新输入发送它们;以前的函数和行为就好像它是一种递归方法,我个人认为不会。 enter image description here

    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种不同的方式,即使通过阅读文档并遵循甚至复制和粘贴并尝试使其工作,我至少有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

1 个答案:

答案 0 :(得分:0)

经过几个小时的修补后,我最终变得沮丧并从头开始。在过去的两天里,我几乎完成了我已经完成的工作的近三分之二的工作,实际上在我删除所有内容时最终搞清楚了我的错误。

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

我的输入错误全部都在前面,因为我试图将字符串和公式从“_CommandInputWindow”分离为“_CommandInputEntry”,当两者都应该完全是一个或另一个时。

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

我没有调用复杂的公式或任何类型的方法,而是最终使用了一个简单的List和一个非常基本的foreach语句,而不是在你点击“Send Command”时有一个复杂的调用系统,它添加了当前的Textile输入并将其添加到列表中,然后调用Method,将最近的字符串显示在列表中,该字符串将是以下输入。

    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>();