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

Unity客户端开发工程师的进阶之路

UWA技能成长系统是UWA根据学员的职业发展目标,提供技能学习的推荐路径,再将所需学习内容按难易等多维度,设计分成多个学习阶段,可以循序渐进地进行学习。

进入技能成长体系,目标选择高级客户端开发工程师(Unity)即可开始学习,初、中级的学习路径我们也会尽快上线,以供更多的开发者们学习成长。

高级客户端开发工程师(Unity)目标共设置了7个学习任务,适合有一定Unity开发经验,想要进一步学习Unity优化技能的开发者,完成学习后,可以掌握游戏性能瓶颈定位的方法和常见的CPU、GPU、内存相关的性能优化方法。

Mission 1:定位性能瓶颈

  • 学会使用常见的性能排查工具
  • 能够定位性能瓶颈来自CPU、GPU还是内存

难度:1颗星
预计学习时长:3小时

目录:
第一章:性能标准
1.1 耗时推荐值
1.2 内存推荐值
1.3 渲染模块推荐值

第二章:性能排查工具
2.1 Unity Profiler
2.2 Unity FrameDebugger
2.3 Mali Offline Compiler
2.4 XCode FrameDebugger
2.5 GOT Online

戳此进入>>UWA-社区

Mission 2:内存占用

  • 掌握结合项目加载模块耗时和内存占用的实际情况制定合理策略的能力
  • 掌握各种主要资源内存的基础知识和常见优化手段
  • 了解Mono堆内存的常见问题和排查方法

难度:1颗星
预计学习时长:3小时

目录:
第一章:策略导致的内存问题
1.1 资源冗余
1.2 代码生成的资源
1.3 加载和缓存策略

第二章:Gfx内存
2.1 纹理资源
2.2 网格资源
2.3 Shader资源

第三章:Reserved Unity
3.1 Render Texture资源
3.2 动画资源
3.3 音频资源
3.4 字体资源
3.5 粒子系统资源

第四章:托管堆内存
4.1 Mono堆内存具体分配

戳此进入>>UWA-社区

Mission 3:动画模块

  • 了解Unity的两种动画系统
  • 能够定位动画耗时的主要瓶颈
  • 掌握Mecanim动画常见的优化方案

难度:1颗星
预计学习时长:3小时

目录:
第一章:Mecanim动画
1.1 Active Animator数量
1.2 Optimize Game Objects
1.3 Apply Root Motion
1.4 Compute Skinning
1.5 Animator.Initialize

第二章:Legacy动画
2.1 Animation.Sample

戳此进入>>UWA-社区

Mission 4:物理模块

  • 掌握Contacts、物理更新次数、Rigidbody、 Collider等物理相关的基本概念
  • 了解物理更新次数的影响因素和限制方法
  • 掌握常见的替代物理模拟的优化方案
  • 掌握如何使用Profiler分析和确认Contacts的数量

难度:1颗星
预计学习时长:3小时

目录:
第一章:物理模块耗时
1.1 Collision的产生
1.2 Trigger的替代方案
1.3 Physics Layer的设置
1.4 物理更新次数
1.5 Auto Simulation
1.6 RaycastCommand

第二章:物理模块堆内存
2.1 NonAlloc物理API

戳此进入>>UWA-社区

Mission 5:UGUI

  • 了解UGUI热点函数的优化
  • 掌握UI的DrawCall优化方法
  • 了解UI模块对于GPU产生的压力

难度:2颗星
预计学习时长:3小时

目录:
第一章:热点函数
1.1 Canvas.SendWillRenderCanvases
1.2 BuildBatch & EmitWorldScreenspace CameraGeometry
1.3 SyncTransform
1.4 EventSystem.Update

第二章:DrawCall优化
2.1 合并图集
2.2 重叠打断合批
2.3 Z!=0

戳此进入>>UWA-社区

Mission 6:加载模块

  • 了解隶属于加载模块的耗时节点的原理和含义
  • 掌握RUUA、Shader加载等常见耗时瓶颈的优化方案
  • 掌握AB加载、资源加载、资源实例化、对象显隐等常见加载模块API的使用场景

难度:2颗星
预计学习时长:5小时

目录:
第一章:Loading.UpdatePreloading
1.1 Shader解析和编译
1.2 Resources.UnloadUnusedAssets
1.3 异步加载优先级

第二章:加载API
2.1 加载和卸载AssetBundle
2.2 加载和卸载资源
2.3 实例化和销毁对象
2.4 激活和隐藏对象

戳此进入>>UWA-社区

Mission 7:渲染模块压力定位

  • 学会4种Batching方式
  • 掌握Culling的优化方法
  • 掌握Overdraw的统计和优化方法
  • 掌握Shader复杂度的统计方法

难度:3颗星
预计学习时长:5小时

目录:
第一章:渲染模块CPU压力
1.1 Batching
1.2 Culling

第二章:渲染模块GPU压力
2.1 GPU耗时
2.2 渲染面片数
2.3 Overdraw
2.4 后外理
2.5 Shader复杂度

戳此进入>>UWA-社区


以上是技能成长体系中的针对高级客户端开发工程师的相关学习内容,按学习任务,一步步“升级打怪”,一定会有所收获。

此外,还为大家整理了高级客户端开发工程师的学习路径,按难易度以及模块进行区分,并在对应的知识点为大家推荐了课程,感兴趣的读者可以前往UWA学堂搜索查看~

相关文章:

Unity客户端开发工程师的进阶之路

UWA技能成长系统是UWA根据学员的职业发展目标,提供技能学习的推荐路径,再将所需学习内容按难易等多维度,设计分成多个学习阶段,可以循序渐进地进行学习。 进入技能成长体系,目标选择高级客户端开发工程师(U…...

2023年全国最新高校辅导员精选真题及答案34

百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 72.心理发展的特点是()。 A.方向性与不可逆性 B.连续性与阶段性…...

chatGPT身份指令

充当 Linux 终端 我想让你充当 Linux 终端。我将输入命令,您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出,而不是其他任何内容。不要写解释。除非我指示您这样做,否则不要键入命令。当我需要用英语告诉你一些事情时&…...

基于springboot实现私人健身与教练预约管理系统【源码+论文】分享

基于springboot实现私人健身与教练预约管理系统演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea M…...

网络技术领域术语大全,含中英文及缩写,强烈建议收藏!

你好,这里是网络技术联盟站。 今天给大家分享的是网络技术领域相关的术语大全,在文末,我已经将本文整理成一个pdf文档了,大家可以下载到本地以便查阅。 自主访问控(DAC:Discretionary Access Control) 自主访问控制(DAC)是一个…...

C++源码剖析——vector和array

前言:之前看过侯老师的《STL源码剖析》但是那已经是多年以前的,现在工作中有时候查问题和崩溃都需要了解实际工作中使用到的STL的实现。因此计划把STL的源码再过一遍。   摘要:本文描述了llvm中libcxx的std::vector的实现。   关键字&…...

学习linux编程(一)

本文导航一. Linux基础知识杂记0. terminal操作快捷键等1. 为什么vfork的子进程里用return,整个程序会挂掉,而且exit不会(zz)2. 进程内存管理详解3. 关于堆和自由存储区概念的区别4. cache和buffer的区别5. C实现线程池6. 静态函数和虚函数的区别7. C里是…...

pt-query-digest_详细使用方法

pt-query-digest_详细使用方法1. pt介绍1.1. 说明1.2. 安装2 语法选项2.1 所有参数2.2 常见参数2.3 事件和属性2.4 分组2.5 过滤2.6 排序2.7 输出选项2.8 DSN(数据源)选项3. 慢日志3.1 事件属性3.2 分析报告3.2.1 第一部分:总体概况说明3.2.2 第二部分:查…...

基于MATLAB编程的萤火虫FA优化BP神经网络的回归分析

目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络激活函数及公式 SVM应用实例,基于fa-svm分类预测 代码 结果分析 展望 BP神经网络的原理 BP神经网络的定义 人工神经网络无需事先确定输入输出之间映射关系的数学方程,仅通过…...

leetcode 消失的数字(面试题)

题目 数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例 1: 输入:[3,0,1] 输出:2 示例 2: 输入&…...

Spring入门篇6 --- AOP

目录1.核心概念AOP(Aspect Oriented Programming)面向切面编程:一种编程范式,指导开发者如何组织程序结构作用:在不惊动原始设计的基础上为其进行功能增强。连接点(JoinPoint):程序执行过程中的任意位置切入点(PointCut)&#xff…...

linux 配置java环境

1、上传jdk包到/usr/local/java目录下 2、解压jdk的tar包 tar -zxvf jdk-8u291-linux-x64.tar.gz 3、添加配置(环境变量) 注意:JAVA_HOME值为实际jdk路径 打开配置文件 vi /etc/profile 最下面添加: #set java environment JAVA_HOME/usr/…...

分布式事务基础入门

分布式事务基础入门 什么是分布式事务 什么是分布式事务? 首先理解什么是本地事务? 平常我们在程序中通过spring去控制事务是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务&#xff0…...

白盒测试究竟怎么做

大家好,我是洋子 在进行日常测试的时候,我们大部分时间花在手动的功能测试上,功能测试又可称为手工测试,官方一点的学名叫黑盒测试,当然作为测试工程师,我们一般俗称点点点 黑盒测试是一种软件测试方法&am…...

EEG微状态的功能意义

导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构,这些结构能够最佳地解释自发EEG记录中随时间变化的差异。这四种结构被称为EEG微状态A、B、C和D类,分别与言语/语音、视觉、主观感受-自主加工和注意力重定…...

Python3 - Flask+swift实现单点登录

基于 Flask 和 Redis 实现单设备登录的服务端代码和客户端swift、oc代码: Python flask 实现服务端 from flask import Flask, jsonify, request from redis import Redisapp Flask(__name__) redis_db Redis()# 用户登录接口,验证用户名和密码&#…...

HTML URL

文章目录HTML URLURL - 统一资源定位器常见的 URL SchemeURL 字符编码URL 编码实例HTML URL URL 是一个网页地址。 URL可以由字母组成,如"csdn.net",或互联网协议(IP)地址: 192.168.100.1。大多数人进入网站…...

带你了解ICCV、ECCV、CVPR三大国际会议

文章目录 前言 一、ICCV、ECCV、CVPR是什么? 1.ICCV 2.ECCV 3.CVPR 二、三大会链接及论文下载链接 前言  作为刚入门CV的新人,有必要记住计算机视觉方面的三大顶级会议:ICCV,CVPR,ECCV,统称为ICE。 与其它学术领域不同,计算机科学使用会议而不是期刊作为发表研究成果的主…...

常用的一些代码

今天菜鸟涨工资了,到手估计有8000左右了,有点开心,本来想上一篇就把这篇写了的,但是发现还是分开写比较好! 文章目录自适应js禁止放大播放声音store的使用websocket封装echarts实现渐变swiper常用的陌生方法&#xff0…...

Python-df.pop()和np.array.shape()属性

1.df.pop() 删除某一列 可以使用这个来删除某一列(不能是多列),只有一个参数,就是列名,可以是str类型,函数返回的是被删除的列,df直接是删除后的df,不需要我们处理。 我们建模时&a…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...