bug描述:
ArgumentException: Getting control 0's position in a group with only 0 controls when doing repaint Aborting
问题产生原因:
解决方案:
由于事件类型为EventType.Layout,unity在Ongui中记录此时编辑器的排版信息,但是并不绘制,等到EventType.Repaint时根据排版信息绘制。而本bug中,点击按钮时改变了排版信息,但是EventType.Layout事件发生在点击按钮之前,此时EventType.Repaint事件发生时,排版信息无法对应得上,就会产生这个bug,最后用以下代码解决:
//拦截EventType.Repaint事件
if(isChangeValue && Event.current.type == EventType.Repaint)
{
isChangeValue = false;
//调用重绘函数,会重新发送EventType.Layout事件以及EventType.Repaint事件
editorWindow.Repaint();
}
else
{
//处理绘制窗口函数
//如果排版信息改变
isChangeValue = true;
}