繁体   English   中英

EditorWindow:具有递归输出错误的输入

[英]EditorWindow : Input with recursive output error

下午->清晨; 基本上,我目前在IEquatable上有一个问题,该问题位于“使用系统”和“使用System.Collection.Generic”中,基本上,此任务的目的是让用户选择数据库并发送输入。 我让他们通过我测试过的基本字符串发送输入,并且可以正常工作。 尽管我的问题纯粹是视觉问题,而且数据似乎也在列表中积累; 所以发生了什么{ 这里 }获取最后一个输入字符串并将其复制并再次发送,然后复制最后几个输入并将其与新输入一起发送; 它采用了以前的功能,并且好像它是一个递归方法,我个人认为不会。 在此处输入图片说明

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

}

这就是我格式化信息以进行输出的方式

我已经阅读并尝试使用Array's和Lists大约50种我可以想到的不同方式,即使通过阅读文档并遵循甚至复制和粘贴并尝试使其正常工作,我也一直遇到相同的“递归”问题我现在有。

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

经过数小时的修补,我最终变得烦躁不安,从零开始。 我拼凑了过去两天几乎完成的工作的2/3,最终发现了我删除所有内容后的错误。

_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输入并添加了它。到列表,然后调用将在列表中显示最近字符串的方法,该字符串将是以下输入。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM