zoukankan      html  css  js  c++  java
  • unity EditorGUILayer绘制报错

    最近在开发一个可视化工具的时候,遇到了一个代码错误,小小的记录一下

    • 具体的报错信息:ArgumentException: Getting control 0's position in a group with only 0 controls when doing Repaint A
      从Unity的报错信息上我们可以得知在OnGUI绘制的时候,它找不到可控的位置。经过查找和验证发现一个很有意思的事情:OnGUI函数每帧并不是仅仅只调用一次!
      通常,当没有输入处于活动状态时,会使用EditorGUILayout和Repaint调用OnGUI两次。在EditorGUILayer调用期间,将处理GUILayout调用并计算控件的位置和大小,屏幕上实际上不会显示任何内容。其次,调用Repaint事件时调用它,这次控件实际上是用计算出的位置和大小绘制的。当有一个有效输入(鼠标,键盘等)时,它也被称为额外时间,并且此调用始终是最后一次,它也会导致在屏幕上绘图。按照上述的逻辑,我们就可以很清楚的知道,当我们在OnGUI里面进行动态的绘制时,要避免对EditorGUILayer的改变,不然在同一帧的不同OnGUI上,它有可能会找不到你需要的EditorGUILayer的位置坐标。
    • 解决方法:我使用了EditorGUI绘制来代替EditorGUILayer,对于EditorGUI,我们可以通过计算来传入位置信息,使得在每一次的绘制都能够获取到真正的位置信息,避免出错。
  • 相关阅读:
    Oracle 绑定变量窥视
    MongoDB 查看chunk块大小
    Linux 查看实时网卡流量的几种方式
    MongoDB 集合与文档操作
    MongoDB 副本集的常用操作及原理
    MongoDB 副本集主从切换方法
    MongoDB 副本集节点添加与删除
    Linux 硬件软件时间同步
    Linux ntp 时间同步服务配置
    MongoDB oplog详解
  • 原文地址:https://www.cnblogs.com/fzuljz/p/11138096.html
Copyright © 2011-2022 走看看