【问题标题】:EditorWindow : Input with recursive output errorEditorWindow:递归输出错误的输入
【发布时间】:2018-04-16 22:46:13
【问题描述】:

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

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

这是我如何将命令发送到数据库的 sn-p,它有一个输出显示命令编号,所以如果我发送 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/en-us/library/x303t819(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx

【问题讨论】:

    标签: c# unity3d recursion arraylist


    【解决方案1】:

    经过几个小时的修补,我最终感到沮丧并从头开始。在过去两天里,我完成了几乎 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 语句,而不是在你点击“发送命令”的那一刻有一个复杂的调用系统,它添加了当前的 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>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      相关资源
      最近更新 更多