Unity编辑器扩展的常用知识

  • OnGUI函数的调用时机
    OnGUI函数在每一帧至少调用两次,OnGUI对Event事件进行响应,其中layout和repaint事件每帧至少会各执行一次.Events 类型包括鼠标点击、鼠标拖动、按下按钮、鼠标进入或退出窗口、滚轮以及以下提到的其他类型。对于每个事件,在这些脚本中均调用 OnGUI;因此每帧可能多次调用 OnGUI。 Event.current 对应于 OnGUI 调用内的“当前”事件。这些事件的发生都会导致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达到从不显示到完全显示的动画效果.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值