
Unity 优化
文章平均质量分 63
子胤
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C# Lambda 和 匿名函数的GC总结
关于Lambda和 匿名函数,闭包的GC,其实可以总结为两条。为了方便理解,以举例说明,首先我们定义变量,静态变量,以及函数如下: static int staticVariable = 0; int variable = 0; private void Func(Action callback) { } private void StaticFunc(Action callback) { } private void Ca原创 2022-01-19 17:47:07 · 2533 阅读 · 1 评论 -
CPU Cache原理与示例
转自这篇 CPU Cache,估计也没人看基础知识首先,我们都知道现在的 CPU 多核技术,都会有几级缓存,老的 CPU 会有两级内存(L1 和 L2),新的CPU会有三级内存(L1,L2,L3 ),如下图所示:其中: L1 缓存分成两种,一种是指令缓存,一种是数据缓存。L2 缓存和 L3 缓存不分指令和数据。 L1 和 L2 缓存在每一个 CPU 核中,L3 则是所有 CPU 核心共享的内存。 L1、L2、L3 的越离CPU近就越小,速度也越快,越离 CPU 远,转载 2022-01-13 12:45:10 · 509 阅读 · 0 评论 -
UGUI 合批原理
转自:UGUI合批原理笔记 - 赵青青 - 博客园UGUI合批规则图解_时光不染-CSDN博客_ugui合批规则合批的过程#网格更新机制#Cavans.SendWillRenderCanvas m_LayoutRebuildQueue m_GraphicRebuildQueue Canvas.BuildBatch 更新所有DrawCall WaitingForJob 子线程网格合并 PutGeometryJobFence BatchRendere.Flu.转载 2022-01-01 11:57:52 · 1058 阅读 · 0 评论 -
Unity URP中根据深度重建世界坐标
通过深度值重建世界坐标,可以做出很多有意思的后处理效果,先实现下度值重建世界坐标这个功能。一.验证重建效果首先,得先找到一种证明反推回世界空间位置正确的方法。在相机前摆放几个物体,尽量使之在世界坐标下的位置小于1,方便判定颜色,然后将几个物体的shader换成如下的一个打印世界空间位置的shader://打印在世界空间位置Shader "Universal Render Pipeline/Dejavu/ReconstructPositionWithDepth/WorldPosPrint"原创 2021-10-24 18:50:10 · 12476 阅读 · 3 评论 -
使用arm-linux-androideabi-addr2line 定位Unity Android 段错误
arm-linux-androideabi-addr2line是NDK中提供的将内存地址转换成行号的一个工具,通俗具体点就是根据各种日志,譬如trace日志和tomestone日志中包含的so库日志的中偏移内存地址,定位到具体是在那个文件的那一行。Unity的安装目录中,如果安装了NDK,就会自带这个工具比如我的路径如下(windows版本工具)F:\Unity\2019.4.11f1\Editor\Data\PlaybackEngines\AndroidPlayer\NDK\toolchains\原创 2021-06-30 18:48:43 · 2674 阅读 · 3 评论 -
C#中的event直接调用和Invoke的区别,是否性能有差异
classStudent:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;privatestringname;publicstringName{get{returnname;}set{na...原创 2021-03-16 19:12:50 · 3079 阅读 · 0 评论 -
unity 解决引入dlopen api的问题
打包出来的ipa在腾讯的wetest的ios预审中报以下错误。对于dlopen api, 是苹果禁用的,对Unity项目痛苦的挨个二分排查后,发现很多都有可能引入。1.和XML或Excel相关的C# API极有可能引入。https://blog.csdn.net/qq_36622009/article/details/1038828542.C# 原生的关于HttpWebRequest和多线程相关的代码3.C#关于网络net的代码4.有些插件,比如BestHttp插件,Avprovid原创 2021-02-24 15:51:19 · 896 阅读 · 0 评论 -
ios did receive memory warning
今天测试IOS包体时,在一个很老的Ipad上闪退,查log显示是did receive memory warning。Google了一圈,原因是2013年之前的ipad,用的A7处理器,不支持Unity的ASTC的Texture格式,因此游戏启动后,内存就爆掉了。2014年之后的A8处理器就没问题了。想适配这么老低端机的话,就得分机型提供图片格式了,我们的解决办法很简单很有效:砍掉,不支持2013年之前的机器。...原创 2021-02-23 16:13:58 · 358 阅读 · 0 评论 -
Unity AssetBundle内存管理相关问题
AssetBundle机制相关资料收集最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化.Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的。其实场景里所有静态的对象也有这么一个加转载 2020-11-04 16:27:13 · 1744 阅读 · 0 评论 -
Unity 音频优化方案
参考资料:https://www.cnblogs.com/bearhb/p/11210136.htmlhttps://blog.csdn.net/chenfujun818/article/details/81710895文件格式mp3:失真小,适合音质要求高的文件,例如BGMwav:资源大,不推荐ogg:压缩比高,适合人声、音效等Profiler可关注的参数TotalSources:AudioSource总资源数AudioClipCount:缓存的音频剪辑个数..原创 2020-11-04 16:13:12 · 1897 阅读 · 0 评论 -
URP中的2D Light光照在移动端不生效的问题
最近在尝试用URP推出的还在preview阶段的2D Render系统,发现2D光照在打成APK后失效,尝试了些方法后发现把2d光照用到的shader放进设置中的built in shader后可以解决问题:原创 2020-10-13 14:20:09 · 1243 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记 Scripting Strategies Part 5
一. Disable unused scripts and objects场景中激活的物体或者脚本越多,开销越大。对于很多并没有产生作用的脚本和物体,可以隐藏掉从而提升性能,比如FPS游戏中视野外的部分。1.Disabling objects by visibility有时我们希望脚本和物体在不可见的时候能处于disabled状态。Unity在内部渲染时提供了Frustum Culling技术来裁剪摄像机视野外的部分,也提供了Occlusion culling来剔除被遮挡的部分。但是这两个技术只原创 2020-05-25 23:51:22 · 372 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (6)
1.Use less texture data这条优化技巧非常直接,减少texture的数据量,减少分辨率或者降低位数,虽然可能会降低渲染质量。但是通常使用16-bit textures并不会明显的感觉到渲染效果下降。MipMap技术可以有效减少VRAM和Texture Cache之间来回传递的texture数据量。值得一提的是Scene视图中有Mipmaps Shading Mode,可...原创 2020-04-07 12:49:14 · 738 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (5) Shader优化
Shader optimizationFill Rate和 Memory Bandwidth开销最大的地方就是Fragment Shader。开销多大取决于Fragment Shader的复杂程度:多少纹理需要采样,多少数学计算函数需要使用等等。GPU的并行特性意味着在线程中如果任何地方存在瓶颈,都会导致有大量fragments的渲染出现问题。Shader编程和优化是游戏开发中比较困难的一...原创 2020-04-03 17:41:07 · 556 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (4)
Optimizing Unity UI本章讲探讨一些能够提升UGUI性能的优化方法。Use more Canvases原创 2020-04-01 19:06:21 · 820 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (3)
Rendering performance enhancementsEnable/Disable GPU Skinning开启GPU Skinning可以减轻CPU或GPU中Front End部分中某一个的负担,但是会加重另一个的负担。Skinning是mesh中的顶点根据动画中骨骼的当前位置进行计算,从而让角色摆出正确的姿势。顶点的计算过程可以放在CPU也可以放在GPU的Front ...原创 2020-04-01 01:05:35 · 750 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记 The Benefits of Batching
batching(合批) 和大量的描述一个3D物体的数据有关系,比如meshes,verices,edges,UV coordinates 以及其他不同类型的数据。在Unity中谈论batching,指的是用于合批mesh数据的两个东西:Dynamic Batching(动态合批) 和 Static Batching(静态合批)。渲染管线特别喜欢处理合在一起提交的mesh数据而不是单独的一个个的m...原创 2020-03-30 01:00:51 · 484 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记 Dynamic Graphics(2)
Lighting and Shadowing现代的游戏中,基本没有物体能在一步就完成渲染,这是因为有光照和阴影的关系。光照和阴影的渲染在Fragment Shader中需要额外的pass。首先要设置场景中的Shadow Casters和Shadow Receivers,Shadow Casters投射阴影,Shadow Receivers接收阴影。之后每一个Shadow Receiver渲...原创 2020-03-30 00:59:23 · 1058 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记 Dynamic Graphics(1)
The Rendering Pipeline渲染表现差有可能取决于CPU端(CPU Bound)也有可能取决于GPU(GPU Bound).调查CPU-bound的问题相对简单,因为CPU端的工作就是从硬盘或者内存中加载数据并且调用图形APU指令。想找到GPU-bound的原因会困难很多,因为在渲染管线中很多地方都有可能是引起问题的原因。解决GPU 瓶颈的问题我们甚至可能得使用猜测法和排除法。...原创 2020-03-29 17:06:28 · 1951 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记(4)Scripting Strategies Part 4
1.Avoid Find() and SendMessage() at runtimeSendMessage() 方法和GameObject.Find() 相关的一系列方法都是开销非常大的。SendMessage()函数调用的耗时大约是一个普通函数调用的2000倍,GameObject.Find() 则和场景的复杂度相关,场景越复杂,调用自然越慢。有时候在场景的初始化时,比如Awake和S...原创 2020-03-20 01:11:48 · 227 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记(3)Scripting Strategies Part 3
1.Avoid retrieving string properties from GameObjects通常来讲,从C#的object中获取string 属性没有额外的内存开销,但是Unity中的Gameobject不一原创 2020-03-19 10:45:01 · 256 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记(2)Scripting Strategies Part 2
1.Share calculation output和上一个Tip很像,可以缓存计算结果或者各种信息,避免多次重复的计算,例如在场景里查找一个物体,从文件读取数据,解析Json等等。容易忽略的点是常常在基类了实现了某个方法,在子类里只是不断的使用而不再去注意基类里的这个方法是否消耗很大,如果遇到性能问题可以通过Profiler定位函数,进而优化,作者的建议是除非真的遇到了性能瓶颈,否...原创 2020-03-18 12:51:52 · 190 阅读 · 0 评论 -
Unity 2017 Game Optimization 读书笔记(1)Scripting Strategies Part 1
1.Obtain Components using the fastest methodUnity有多种Getcomponet的方法:GetComponent(string),GetComponent<T>()GetComponent(typeof(T))哪种效率最高会跟随Unity版本的变化而变化,对于Unity 2017,本书作者的测试是GetComponent...原创 2020-03-16 16:49:57 · 205 阅读 · 0 评论