[英]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.