![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
unity 优化
文章平均质量分 84
一零壹0
这个作者很懒,什么都没留下…
展开
-
让Unity迭代器性能提升5倍
最近在研究Unity il2cpp的代码生成和编译优化,结合之前遇到过的一个优化案例,给大家讲讲在Unity中迭代器相关代码生成的底层原理,以及在写代码过程中需要注意的一些特殊情况。原创 2024-01-29 19:39:00 · 1413 阅读 · 0 评论 -
Unity 优化之灯光
2,Soft Shadows:软的阴影,比较耗性能,抗锯齿较小。3,Hard Shadows:硬的阴影,耗性能较小,抗锯齿较大。1,No Shadows:无阴影,不显示阴影。原创 2023-03-15 19:41:36 · 921 阅读 · 0 评论 -
Unity 优化贴图模型
Android推荐使用ETC,如果是带透明通道的,可选择ETC2,注意:ETC2只在支持OpenGLES 3.0的设备获得支持,如果考虑旧设备,则可以选用ETC,然后勾选Split Alpha Channel。注意:ASTC仅在iPhone 6以后的设备被支持,如果需要支持iPhone 6之前的设备,可以设置为PVRTC。,可以将暴露在Hierarchy的子节点移除,极大的减少了模型的层级和Children数量,从而提升运行时性能。可能会不成熟,如果发现动画出错,可以把这里属性关闭看看效果。原创 2023-03-15 11:26:16 · 1946 阅读 · 0 评论 -
C# Lambda 和 匿名函数的GC总结
若是一个匿名函数引用到外部变量,则会造成一个闭包,C#为了实现这一点会生成一个匿名类(记住,类都是引用类型)来保存用到的外部变量,因此当调用这个闭包时,首先会实例化一个副本,同时会采用外部变量实际值来初始化这个副本,最终致使会在堆上分配内存。也就是说闭包就一定会产生内存分配很有可能我们这个LINQ会在排序函数中用到,那么产生的GC就不是一个小数目了。游戏的卡顿也会跟随着出现。测试代码: List<int> list = new List<i...原创 2022-05-29 13:01:07 · 619 阅读 · 0 评论 -
Unity优化之音频
这篇主要记录关于Unity内音频设置与音频优化的一些方法Unity支持很多音频格式:1.Mp3 :失真小,适合音质要求较高的文件。2.WAV:资源大,不推荐。3.OGG:压缩比高,适合人声和音效等。先祭一张Unity音频的设置面板根据上图的Unity音频设置面板先介绍下个选项的功能:ForceToMono:如果启用,音频将向下混合成单声道,一般手机使用单声道足够满足需求。建议强制音效使用单声道,只有少数手机真的有立体声喇叭,最重要的是将音频强制设置为单声道可以让内存减半.原创 2022-04-23 12:19:24 · 1662 阅读 · 0 评论 -
Unity 性能优化之合批
前言动态合批与静态合批其本质是对将多次绘制请求,在允许的条件下进行合并处理,减少cpu对gpu绘制请求的次数,达到提高性能的目的。首先,啥是合批?批量渲染其实是个老生常谈的话题,它的另一个名字叫做“合批”。在日常开发中,通常说到优化、提高帧率时,总是会提到它。为啥要合批?批量渲染是通过减少CPU向GPU发送渲染命令(DrawCall)的次数,以及减少GPU切换渲染状态的次数,尽量让GPU一次多做一些事情,来提升逻辑线和渲染线的整体效率。但这是建立在GPU相对空闲,而CPU把更多的时间都耗原创 2022-04-07 23:15:08 · 7553 阅读 · 0 评论 -
Unity UGUI 性能优化
一、减少不必要的Raycast Target所有UGUI组件在创建时都默认开启了Raycast Target这一选项,实际上是为接受事件响应做好了准备。而事实上,大部分比如Image、Text类型的UI组件是不会参与事件响应的,但仍然会在鼠标/手指划过或悬停时参与轮询,通过模拟射线检测判断UI组件是否被划过或悬停,造成不必要的耗时。尤其在项目中UI组件比较多时,关闭不参与事件响应的组件的Raycast Target设置,可以有效降低EventSystem.Update()耗时。二、Draw原创 2022-04-06 17:55:44 · 4203 阅读 · 0 评论 -
Unity 性能优化-代码
1、GameObject本机-托管桥接与C#对象相比,GameObject和MonoBehaviour是特殊对象,因为它们在内存中有两个表示:一个表示存在于管理C#代码相同系统管理的内存中,C#代码是用户编写的(托管代码),另一个表示存在于另一个单独处理的内存空间中(本机代码)。数据可以再这两个内存之间移动,因此每次移动都会导致额外的CPU开销和 可能的额外内存分配,这种效果一般称为跨越本机-托管的桥接。由以上理论,触发这种额外开销的有以下两种常见情况: 对GameObject空引用检查原创 2021-11-22 16:10:52 · 3538 阅读 · 1 评论