当前位置: 首页 > news >正文

Unity笔记--Canvas-网格重建

参考:(五)UGUI源码分析之Rebuild(布局重建、图形重绘)

网格重建

  网格重建大体包括布局重建图形重建两部分。

  public enum CanvasUpdate{Prelayout,Layout,PostLayout,PreRender,LatePreRender,MaxUpdateValue,}

  每一帧渲染前会进行触发Canvas.willRenderCanvases事件,CanvasUpdateRegistry单例注册PerformUpdate方法给事件。即:

  每一帧渲染前会调用CanvasUpdateRegistry.PerformUpdate方法

private void PerformUpdate()
{UISystemProfilerApi.BeginSample(UISystemProfilerApi.SampleType.Layout);CleanInvalidItems();m_PerformingLayoutUpdate = true;m_LayoutRebuildQueue.Sort(s_SortLayoutFunction);for (int i = 0; i <= (int)CanvasUpdate.PostLayout; i++){UnityEngine.Profiling.Profiler.BeginSample(m_CanvasUpdateProfilerStrings[i]);for (int j = 0; j < m_LayoutRebuildQueue.Count; j++){var rebuild = instance.m_LayoutRebuildQueue[j];try{if (ObjectValidForUpdate(rebuild))rebuild.Rebuild((CanvasUpdate)i);}catch (Exception e){Debug.LogException(e, rebuild.transform);}}UnityEngine.Profiling.Profiler.EndSample();}for (int i = 0; i < m_LayoutRebuildQueue.Count; ++i)m_LayoutRebuildQueue[i].LayoutComplete();instance.m_LayoutRebuildQueue.Clear();m_PerformingLayoutUpdate = false;UISystemProfilerApi.EndSample(UISystemProfilerApi.SampleType.Layout);UISystemProfilerApi.BeginSample(UISystemProfilerApi.SampleType.Render);// now layout is complete do culling...UnityEngine.Profiling.Profiler.BeginSample(m_CullingUpdateProfilerString);ClipperRegistry.instance.Cull();UnityEngine.Profiling.Profiler.EndSample();m_PerformingGraphicUpdate = true;for (var i = (int)CanvasUpdate.PreRender; i < (int)CanvasUpdate.MaxUpdateValue; i++){UnityEngine.Profiling.Profiler.BeginSample(m_CanvasUpdateProfilerStrings[i]);for (var k = 0; k < instance.m_GraphicRebuildQueue.Count; k++){try{var element = instance.m_GraphicRebuildQueue[k];if (ObjectValidForUpdate(element))element.Rebuild((CanvasUpdate)i);}catch (Exception e){Debug.LogException(e, instance.m_GraphicRebuildQueue[k].transform);}}UnityEngine.Profiling.Profiler.EndSample();}for (int i = 0; i < m_GraphicRebuildQueue.Count; ++i)m_GraphicRebuildQueue[i].GraphicUpdateComplete();instance.m_GraphicRebuildQueue.Clear();m_PerformingGraphicUpdate = false;UISystemProfilerApi.EndSample(UISystemProfilerApi.SampleType.Render);
}

每一帧的网格重建流程:

  • CanvasUpdateRegistry维护2个列表:布局重建列表和图形列表,分别存放需要进行布局重建和图形重建的ICanvasElement。
  • 通过CanvasUpdateRegistry的RegisterCanvasElementForGraphicRebuild和TryRegisterCanvasElementForGraphicRebuild添加元素,相当于脏标识。

布局重建

  1. Prelayout、Layout、PostLayout阶段各调用一遍布局重建列表(m_LayoutRebuildQueue)中各元素(ICanvasElement)的重建函数(Rebuild),即:将所有需要重新计算布局的元素进行Rebuild。所以,对接口ICanvasElement的Rebuild方法的实现里会对更新阶段进行判断,例如:if (executing == CanvasUpdate.Prelayout)。
  2. 布局重建完毕,调用各元素(ICanvasElement)的LayoutComplete()回调。
  3. 清空布局重建列表(m_LayoutRebuildQueue)。

图形重建

  1. 对所有已注册的IClipper执行裁剪:ClipperRegistry.instance.Cull();
  2. PreRender、LatePreRender、MaxUpdateValue阶段各调用一遍图形重建列表(m_GraphicRebuildQueue)中各元素(ICanvasElement)的重建函数(Rebuild),即:将所有需要重新绘制的元素进行Rebuild。
  3. 图形重建完毕,调用各元素(ICanvasElement)的GraphicUpdateComplete()回调。
  4. 清空图形重建列表(m_GraphicRebuildQueue)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-3063.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

实训第一天以及第二天所学记录

实训第一天以及第二天所学记录 浏览器内核 IE&#xff1a;Trident Firefox&#xff1a;Gecko Chrome&#xff1a;Webkit / Blink Safari&#xff1a;Webkit Opera&#xff1a;Presto / Blink 在VScode中使用注释的快捷键 按住键盘的Ctrl/ 元素 &#xff08;标签 标记&…...

跨域请求

/* * Description: 配置文件 */ module.exports { publicPath: "./", devServer: { open: true, proxy: "http://106.15.179.105/api" //跨域路径 }, }; // proxy是代理的意思 // 代理跨域就是在欺骗浏览器 让浏览器认为你访问的还是 同…...

Mac os下通过Anaconda在远程服务器配置python虚拟环境

一、SSH管理软件 这里推荐一款本人正在使用的软件&#xff0c;Termius。Termius是一款非常好用而且漂亮的SSH客户端&#xff0c;能快速远程控制服务器&#xff0c;可以定制自己喜欢的主题.Termius不仅涵盖了Windows、Linux、OSX&#xff0c;还变态得支持Android和iOS&#xff…...

5G音视频时代还不学NDK开发吗?面试必问

想要成为一名优秀的Android开发&#xff0c;你需要一份完备的知识体系&#xff0c;在这里&#xff0c;让我们一起成长为自己所想的那样。 本文参考了目前大部分 Android 应用启动优化的方案&#xff0c;将大家的方案做一个汇总&#xff0c;如果你有这方面的需求&#xff0c;只…...

Labview需求(部分)

本人从事工控行业多年,有一些资源,目前labview的单子干不过来了,想找几个靠谱的labview工程师跟我合作,想做兼职,接单的labview工程师可以私聊我,另外我有一些项目还需要跟单片机工程师,plc工程师,fpga工程师合作,欢迎大家找我合作!以下是手里比较着急的项目,需要外包 需求1&am…...

2021java1年经验公司面试真题

1面我就省略了&#xff0c;主要就是看你的以前工作情况&#xff0c;以前工作内容能不能清晰表达&#xff0c;还有一些简单的java基础问题&#xff0c;大概20多分钟。二面就是40分钟基础&#xff0c;20分钟业务&#xff0c;10分钟个人情况。下面是二面问题 1.自我介绍 做一下自…...

Unity基础之C#核心篇笔记4:多态

Unity基础之C#核心篇笔记4&#xff1a;多态多态1.多态的概念2.解决的问题3.多态的实现4.总结抽象类和抽象方法1.抽象类2.抽象函数3.总结4.练习题接口1.接口的概念2. 接口的申明3.接口的使用4.接口可以继承接口5.显示实现接口6.总结7.练习题密封方法1.密封方法基本概念2.实例3.总…...

LeetCode每日一题 - 有多少小于当前数字的数字

题目&#xff1a; 给你一个数组 nums&#xff0c;对于其中每个元素 nums[i]&#xff0c;请你统计数组中比它小的所有数字的数目。 换而言之&#xff0c;对于每个 nums[i] 你必须计算出有效的 j 的数量&#xff0c;其中 j 满足 j ! i 且 nums[j] < nums[i] 。 以数组形式返回…...

用Python爬取彼岸图网图片

用Python爬取彼岸图网图片 *使用了 四个模块 import time import requests from lxml import etree import os 没有的话自行百度安装。 #encoding utf-8 import time import requests from lxml import etree import os# http://www.netbian.com/ 爬虫 if __name__ __mai…...

02.xshell连不上虚拟机linux的解决办法

虚拟机使用的NAT模式&#xff0c;用Xshell一直连接不上虚拟机上的Linux&#xff0c;最后百度搜索之后&#xff0c;解决步骤如下&#xff1a; 1.在虚拟机里面输入ifconfig&#xff0c;查询虚拟机ip地址 2.打开网络连接&#xff0c;修改VMnet1 IP地址改为与虚拟机同一网段 比如…...

第k个数(快速选择)

算法思路 快速选择&#xff1a; 1.即任意选一个数&#xff0c;将数组划分为二。 2.最终根据该数所在的位置&#xff0c;即第&#xff1f;大&#xff0c;选择第k大的数字所在区间进行划分。 时间复杂度分析&#xff0c;第一次划分n,下一次划分期望n/2&#xff0c;n/4…累加和小…...

2021年茶艺师(中级)模拟考试及茶艺师(中级)模拟考试系统

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 茶艺师&#xff08;中级&#xff09;模拟考试是安全生产模拟考试一点通总题库中随机出的一套茶艺师&#xff08;中级&#xff09;模拟考试系统&#xff0c;在公众号安全生产模拟考试一点通上点击茶艺师&#xff08;中…...

yolov5 detect.py报错

新手求助 yolov5训练了自己的数据集后&#xff0c;test没问题&#xff0c;但是运行detect.py就报错了&#xff0c;一直找不到问题所在&#xff0c; 求大佬指点指点...

DEX 争霸战火升级,BabySwap 会否成为下一代黑马?

在 AMM机制大力推动下&#xff0c;DEX的群雄争霸比预想中来得要快且凶猛。伴随着诸如高盛等主流资本逐步认可DeFi 的意义&#xff0c;在真正的去中心化金融爆发的前夜&#xff0c;可以说谁抢占了DEX 红海的先机&#xff0c;谁就赢得了未来。 从早期以太坊的Uniswap和DoDo&…...

flutter 常用的第三方组件

引用文章链接&#xff1a; https://www.jianshu.com/p/a523e5f131b2 1、格式化日期时间组件&#xff1a;https://pub.dev/packages/date_format 2、日期选择组件&#xff1a;https://pub.dev/packages/flutter_cupertino_date_picker 3、轮播图组件&#xff1a;https://pub.…...

nginx隐藏x-real-ip头配置

实现隐藏X-Real-Ip头&#xff0c;可通过配置server{} proxy_set_header实现。 server { listen 10.10.98.10:8080 backlog20480; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_…...

8.文本处理(编码解码/文件操作)

本章主要从文本处理、系统监控、日志、FTP、邮件监控、微信监控等方面来介绍基础运维的相关知识。 8.1 文本处理 在日常的运维工作中一般都离不开与文本,如日志分析、编码转换、ETL加工等。本节从编码原理、文本操作、读写配置文件、解析XML等实用编程知识出发,希望能抛砖引…...

【vue】vue3学习笔记(三)

接上篇 面包屑 安装path-to-regexpcomponent/breadcrumb/index <template><el-breadcrumb class"app-breadcrumb breadcrumb-container" separator"/"><el-breadcrumb-item v-for"(item, index) in levelList" :key"item…...

MVC三层架构

什么是MVC&#xff1a; Model view Controller 模型、视图、控制器 1.以前的架构模型 用户直接访问控制层&#xff0c;控制层就可以直接操作数据库&#xff1b; servlet--CRUD-->数据库 弊端&#xff1a;程序十分臃肿&#xff0c;不利于维护 servlet的代码中&#xff1a…...

zookeeper--一致性协议 ZAB

一、简介 ZAB 协议全称&#xff1a;Zookeeper Atomic Broadcast&#xff08;Zookeeper 原子广播协议&#xff09;。 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面&#xff0c;Zookeeper 并没有使用 Paxos &#xff0c;而是采用了 ZAB 协议。 Z…...

2021-06-02ES6中Symbol类型 迭代器iterator异步编程使用场景

1.Symbol的基本使用 symbol表示独一无二的值&#xff0c;类似于字符串的数据类型 特点&#xff1a;1&#xff09;symbol的值是唯一的&#xff0c;用来解决命名冲突的问题 2&#xff09;symbol值不能与其他数据进行运算 3&#xff09;symbol定义的对象不能用for…in… 进行遍历&…...

一趟“西藏之旅”让她涨粉40万,这位女卡车司机靠什么出圈?

随着快手短视频生态越来越多元化&#xff0c;卡车司机车轮上的生活&#xff0c;正逐渐为大家所关注。 以车为家的患难夫妻、一次运货穿越3000公里父子、“我开卡车养你&#xff0c;你给我爱情就好&#xff01;”的征婚女司机……让长途货运的酸甜苦辣在短视频上一一呈现。 最…...

小型企业搭建网站,如何选择虚拟主机和云服务器?

选云服务器还是虚拟主机这个问题&#xff0c;一直困扰着中小企业用户。今天就来分析问题解决问题。 首先&#xff0c;云服务器和云虚拟主机都是基于云计算技术研发&#xff0c;也都可以用于建站&#xff0c;那么在建站应用上&#xff0c;云服务器和虚拟主机各自的优势何在&…...

9次Android面试经验总结,面试必问

导语 2020年是转折的一年&#xff0c;2021年算是收获的一年&#xff0c;趁着金三银四开始找工作。先分享一下offer的情况 阿里高德(offer)爱奇艺(offer)腾讯视频(offer)小米(被拒)今日头条(被拒) 在面试的过程中我深深的感受到&#xff0c;对于一个优秀的安卓开发来说&#…...

MySQL技术内幕读书笔记六、MySQL事务

文章目录一、MySQL事务1、认识事务1.1 概述1.2 分类2、事务的实现2.1 redo2.2 undo2.3 purge2.4 group commit3、事务控制语句4、事务的隔离级别5、分布式事务5.1 MySQL数据库分布式事务5.2 内部XA事务6、不好的事务习惯6.1 在循环中提交6.2 使用自动提交6.3 使用自…...

Docker 镜像

文章目录一、镜像二、下载镜像三、镜像的名称四、导出和导入镜像一、镜像 Docker 镜像是一组静态磁盘文件&#xff0c;可以任意下载、复制、分发。从镜像可以运行启动容器&#xff08;Docker的虚拟计算机&#xff09;。 二、下载镜像 从镜像仓库 https://hub.docker.com 下载…...

5G音视频时代还不学NDK开发吗?面试必问

想要成为一名优秀的Android开发&#xff0c;你需要一份完备的知识体系&#xff0c;在这里&#xff0c;让我们一起成长为自己所想的那样。 本文参考了目前大部分 Android 应用启动优化的方案&#xff0c;将大家的方案做一个汇总&#xff0c;如果你有这方面的需求&#xff0c;只…...

allegro 已有异型封装做镜像封装办法

日常小技巧分享 博主为了偷懒也是拼了 问题叙述&#xff1a;candence中当我们制作好一个封装或者是用他人的封装时&#xff0c;发现封装弄错了需要镜像一下&#xff0c;在allegro PCB Editor中会发现没有办法对当前封装不改变当前层进行镜像&#xff0c;一使用镜像就从TOP层便…...

Java毕业设计+现成产品 —>公司销售流程及报表系统的设计与实现

背景及意义 中粤埔项&#xff08;秦皇岛&#xff09;马口铁工业有限公司&#xff0c;是由广东省国资委投资控股的广南&#xff08;集团&#xff09;有限公司&#xff0c;与韩国埔项钢铁公司&#xff0c;共同投资兴建的合资企业。其中广南集团占有主要股份&#xff0c;韩国埔项…...

linux上搭建git服务器之2(git基础操作)

文章目录正文1 获取 Git 仓库1-1 普通目录初始化为git仓库1-2 克隆 一个已存在的 Git 仓库2 记录每次更新到仓库2-1 基础操作2-2 ignore 忽略文件2-3 查看差异2-4 移动文件2-5 查看提交历史2-6 撤销操作正文 参考 https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%…...

Dagger2 入门,以初学者角度.

Dagger2 入门本文属于转载&#xff0c;原文地址&#xff1a;http://blog.izouxiang.cn/2016/10/22/Dagger2%20%E5%85%A5%E9%97%A8/本文比较详细的介绍了Dagger2的一些基础注解的用法&#xff0c;跟着文章的思路去好好去练习&#xff0c;对你的入门是有很大帮助的。阅读完本篇文…...

浅谈Java入门学习

浅谈Java入门学习 随着互联网的发展越来越势不可挡&#xff0c;很多人想从传统行业转入IT行业做一名软件工程师&#xff0c;IT培训行业也随之蓬勃发 展。市面上有很多IT培训公司&#xff0c;教学质量参差不齐&#xff0c;选择一个好的培训机构学习是至关重要的&#xff08;黑…...

Spring框架入门个人笔记

对应文件工程为heima。 1.三层架构 Spring 是分层的轻量级开源框架&#xff0c;以 IoC&#xff08;Inverse of Control&#xff0c;控制反转&#xff09;和 AOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;为内核。在实际开发中&#xff0c…...

SpringCloudAlibaba【一】电商微服务入门案例

背景 今天来学习下SpringCloud的第一个入门案例&#xff0c;我们结合网购流程来理解下SpringCloud分布式服务的特点 订单流程说明&#xff1a;用户下单后&#xff0c;需要减库存和更新购物车&#xff0c;所以会需要用户&#xff0c;商品&#xff0c;库存&#xff0c;购物车服务…...

RabbitMQ 快速入门实战

本文基于最新rabbitmq:3.8.5版本&#xff0c;实现了direct、fanout、topic等几种主要消息模式&#xff0c;并基于spring-amqp完整实现了常见消息案例&#xff0c;同时也通过插件方式&#xff0c;实现了延迟消息的处理&#xff0c;帮您快速入门Rabbit消息处理。 内容概括 rabbi…...

NOSQL快速入门

NoSql是一个很老的概念了&#xff0c;但对自己来说&#xff0c;仍然是一个短板&#xff0c;果断补上。 首先通过几个简单的例子来了解NOSQL在国内的情况(2013年左右的数据&#xff0c;有些过时)&#xff0c;比如新浪微博&#xff0c;其就有200多台物理机运行着Redis&#xff0…...

C语言入门130题-OJ

C语言入门130题-OJBC1 实践出真知BC2 我是大VBC3 有容乃大BC6 小飞机BC7 缩短二进制BC8 十六进制转十进制BC9 printf的返回值BC10 成绩输入输出BC11 学生基本信息输入输出BC12 字符圣诞树BC13 ASCII码BC14 出生日期输入输出BC15 按照格式输入并交换输出BC16 字符转ASCII码BC17 …...

介绍几本python编程入门书

非常有用的python编程入门书笨办法学 Python(第四版&#xff09;零基础入门学python(小甲鱼)python编程从入门到实践(袁国忠译)python核心编程二、三版python核心编程第二版python核心编程第三版笨办法学 Python(第四版&#xff09; 《笨办法学 Python》是 Zed Shaw 编写的一本…...

JSON快速学习入门

title: JSON author: CodeCheng top: false cover: false toc: true mathjax: false tags: 前端json categories:前端json summary: JSON是一种轻量级的数据交换格式。 abbrlink: 5d92c8f1 date: 2021-03-07 09:46:01 img: coverImg: password: JSON JSON JSON: JavaScript …...

常用的排序算法

常用的排序算法 快速排序 思路&#xff1a;以数组中的第一个元素作为基准&#xff0c;对数组进行调整&#xff0c;使得左边的元素都小于基本&#xff0c;右边的元素都大于等于基准&#xff1b;然后再分别对左右两边的数组进行如上方法的排序 import numpy def partition(nums, …...

牛客C语言入门题库

BC2 找规律通过修改宏定义的常量LINE的值可以打印不同量级的V #include <stdio.h> #define LINE 3 int main() {int space_num 1;for (int i 0; i < LINE-2; i)space_num 2;for (int i 0; i < LINE; i) {for (int j 0; j < i; j)printf(" ");pr…...

RocketMQ 实战入门

RocketMQ 是什么 Github 上关于 RocketMQ 的介绍&#xff1a; RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。具有以下特性&#xff1a; 支持发布/订阅&#xff08;Pub/Sub&#xff09;和点对点&#xff08;P2P&#xff09;消息模型在一个队列中可靠的先进先出…...

JSON 入门

JSON 入门 1.简介 JSON 指的是 JavaScript 对象表示法&#xff08;JavaScript Object Notation&#xff09; JSON 是轻量级的文本数据交换格式&#xff0c;是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快&#xff0c;更易解析。 2.语法规则 数据在名称/值…...

RocketMQ从入门到放弃详解

RocketMQ详解一 MQ(message queue) 消息队列&#xff0c;现在市场上普遍流行大面积都在使用的中间件。 文章目录RocketMQ详解一前言一、RocketMQ简介1、优势2、RocketMQ角色二、执行流程1、工作流程以及原理总结前言 Rocketmq&#xff0c;一款分布式队列模型&#xff0c;由阿里…...

java并发编程入门_Java并发编程入门,看这一篇就够了

2.3 资源限制的挑战什么是资源限制资源限制指在进行并发编程时&#xff0c;程序的执行速度受限于计算机硬件资源或软件资源。硬件资源包括&#xff1a;带宽的上传下载速度、硬盘读写速度和CPU的处理速度等软件资源包括&#xff1a;线程池大小、数据库的连接数等资源限制引发的问…...

jsom快速入门

JSON  JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法&#xff0c;具有自我描述性。类似 XML, 但比 XML 更小、更快&#xff0c;更易解析。  JSON 使用 Javascript语法来描述数据对象&#xff0c;但是 JSON 仍然独立于语言和平台…...

RocketMQ入门介绍

简介 用官方的话来说&#xff0c;RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件&#xff0c;具有以下特性&#xff08;ps&#xff1a;对于这些特性描述&#xff0c;大家简单过一眼就即可&#xff0c;深入学习之后自然就明白了&#xff09;&#xff1a; 支持发…...

大数据开发工程师的入门书单

你们是不是都听过一句话&#xff1a;谷歌比你自己更了解你&#xff1f; 事实上&#xff0c;这句话并不是毫无根据&#xff0c;我们周边的一切无不体现数据的重要性&#xff0c;你想想&#xff0c;我们对自己的看法会受到多种主观和客观的因素影响&#xff0c;但谷歌却没有这些…...

淘宝购物技巧分享,献给初涉淘宝的朋友!!很实用的

1、不要认为信誉高&#xff0c;就是好店铺。   解释&#xff1a;二皇冠?一皇冠?高信誉不代表是高质量的产品。新手买家一定不要依赖这些表面现象&#xff0c;要看一下实际的评价。差评多少&#xff0c;中评多少。最重要的&#xff0c;还是要看中差评的理由和卖家的解释。 …...

关于hover改变其他元素

A元素:hover 鼠标悬停在A元素时&#xff0c;改变A元素样式 A元素:hover B元素 鼠标悬停在A元素时&#xff0c;改变A元素的子元素B的样式 A元素:hover B元素 鼠标悬停在A元素时&#xff0c;改变与A相邻的兄弟元素B的样式&#xff08;A必须与B 相邻&#xff09; A元素:hov…...