源码11:Canvas和CanvasUpdateRegistry
Runtime类图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wnyg7g0A-1647096526003)(D:\UnityProjectSpace\BlogRecord\UGUI源码分析\Image\watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RtazE3NzcxNTUyMzA0,size_16,color_FFFFFF,t_70.png)]](https://i-blog.csdnimg.cn/blog_migrate/fe4f63c6812d3565b86dffc6baf97c42.png)
Canvas
Canvas 画布 UGUI的重要组件。 UGUI源码里并没有给Canvas源码 他是在UnityEngine里,这里反射看下源码。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b4zcV57n-1647096506318)(D:\UnityProjectSpace\BlogRecord\UGUI源码分析\Image\image-20220310232122002-16470964181041.png)]](https://i-blog.csdnimg.cn/blog_migrate/0fd513a0213316b16a7d1225cc238f41.png)
Canvas本身提供给引擎调整的参数是上面那些。基本是调整渲染模式 层级 显示等等。
源码里有几个比较重要的属性要记录下
public delegate void WillRenderCanvases();
// 公有事件,在CanvasUpdateRegistry.cs的构造函数里,为willRenderCanvases事件添加了一个监听PerformUpdate。
//在渲染(所有)Canvas之前会抛出willRenderCanvases事件,继而调用到CanvasUpdateRegistry.cs的PerformUpdate方法
public static event WillRenderCanvases willRenderCanvases;
public static event WillRenderCanvases preWillRenderCanvases;
//强制更新所有Canvas, 当Canvas需要重新绘制时调用,可在外部主动调用
public static void ForceUpdateCanvases()
{
SendPreWillRenderCanvases();
SendWillRenderCanvases();
}

本文详细介绍了Unity UGUI系统中的Canvas组件和CanvasUpdateRegistry类。Canvas是UGUI的基础,提供了渲染模式、层级等设置。CanvasUpdateRegistry作为中介,管理着需要更新的ICanvasElement组件,通过监听Canvas的渲染事件,按阶段执行元素的Rebuild方法,确保UI系统的正确更新和渲染。
最低0.47元/天 解锁文章
621

被折叠的 条评论
为什么被折叠?



