-
OnGUI函数的调用时机
OnGUI函数在每一帧至少调用两次,OnGUI对Event事件进行响应,其中layout和repaint事件每帧至少会各执行一次.Events 类型包括鼠标点击、鼠标拖动、按下按钮、鼠标进入或退出窗口、滚轮以及以下提到的其他类型。对于每个事件,在这些脚本中均调用 OnGUI;因此每帧可能多次调用 OnGUI。 Event.current 对应于 OnGUI 调用内的“当前”事件。这些事件的发生都会导致OnGUI函数被调用.
此外,通过官方文档发现,layout事件会先于其他任何事件发送.
通过测试发现,无论用户如何操作导致一些事件的发生,在这之前都会导致layout事件的发生
-
关于layout的介绍课参考该文章
个人理解是在layout事件里设置GUI元素的布局,再在Repant事件里进行绘制. -
使用AnimBool以及EditorGUILayout.BeginFadeGroup来达到编辑器GUI的动画效果
-
注意以下语句:
m_ShowExtraFields.valueChanged.AddListener(Repaint);
此时的value是bool类型,非true即false,一开始以为是当value的值切换的时候触发事件,以调用Repaint回调。
通过测试发现,是当faded值发生变化时都会触发该事件.所以当在window界面点击√时,fade会从
0通过lerp变化到1,变化的过程会触发Repaint方法的回调,Repaint会触发Event.repaint的事件,Event.repaint会导致OnGUI函数的执行.
传入的AnimBool的fade值可以让window上的GUI达到从不显示到完全显示的动画效果.
Unity编辑器扩展的常用知识
最新推荐文章于 2022-03-15 15:36:39 发布