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

郑州做网站比较好的公司搜索引擎google

郑州做网站比较好的公司,搜索引擎google,做网站卖赚钱吗,pc做网站文章目录 前言GPU性能优化打包素材 CPU性能优化代码执行优化 性能测试Vector2.Distance 和 sqrMagnitude哪个好?动画切换优化shader属性优化 URP渲染器资产优化对象池优化删除没必要的空函数图片、音乐音效、贴图等素材压缩ScriptableObject优化参数参考完结 前言 …

文章目录

  • 前言
  • GPU性能优化
    • 打包素材
  • CPU性能优化
    • 代码执行优化
  • 性能测试
    • Vector2.Distance 和 sqrMagnitude哪个好?
    • 动画切换优化
    • shader属性优化
  • URP渲染器资产优化
  • 对象池优化
  • 删除没必要的空函数
  • 图片、音乐音效、贴图等素材压缩
  • ScriptableObject优化参数
  • 参考
  • 完结

前言

功能的实现必不可缺,当然也要注意程序性能的优化。随着项目越来越大,优化变得至关重要,它能确保你的游戏任然可以快速流畅地运行。如果想知道如何对unity进行性能优化以及如何进行性能测试,那就继续往下看吧。

GPU性能优化

打包素材

点击运行游戏,打开分析帧调试器
在这里插入图片描述
然后点击启用工具,逐步查看Unity如何将图像渲染到屏幕上,我们可以看到有五个绘制调用,分别是背景、地板、敌人、玩家和玩家的武器
在这里插入图片描述
如果我们可以使用更少的绘制调用来实现相同的结果,它肯定会更快,我们可以使用Sprite Atlas来做到这一点在这里插入图片描述
把所有的资源都拖入,进行打包(注意这里属性和图片差不多,如果你是像素素材同样可以选择点类型,无压缩进行优化)
在这里插入图片描述
打包效果
在这里插入图片描述
我们再回去分析帧调试器查看,你会看到我们只有三个绘制调用
在这里插入图片描述
既然前面打包了,那么为什么不是一个呢,你可以看到它没有将敌人与玩家进行批处理,因为它们具有不同的材质
在这里插入图片描述
如果我们没必要使用不同的材质,我们可以选择把所有的材质换成一样的
在这里插入图片描述
这样的话,可以看到就仅仅绘制了一次,这明显加快了GPU绘制
在这里插入图片描述

CPU性能优化

代码执行优化

我们经常会有书写这样的代码,比如新增EnemyBehavior.cs脚本挂载在敌人身上,这里在Update中每一帧都调用敌人面向玩家等操作,但是这完全是资源的浪费,在播放模式下没有必要在每帧上都这样做
在这里插入图片描述
运行状态下,打开Profiler 分析器
在这里插入图片描述
只需单击图表上的任意位置,我们的游戏就会暂停,以便我们可以对其进行分析,可以看到目前EnemyBehavior的更新占用了1.2%CPU使用率
在这里插入图片描述
这时候我们可以选择使用脚本委托和定时器控制它的更新频率,比如新增Ticker脚本,没过0.2秒调用TickEvent方法
在这里插入图片描述
逻辑不在Update中调用了,注册委托每0.2s调用一次
在这里插入图片描述
在这里插入图片描述
可以看到敌人是仍然总是面向玩家,但不是每帧都运行该逻辑,运行频率被降低了,但它并没有对游戏中敌人的行为产生明显的影响
在这里插入图片描述

性能测试

但是当涉及到某些代码片段时,仅用这些王具很难判断出什么实际上性能更高,有时您只需要自己测试一些东西,所以让我向您展示如何设置基准测试,来让您运行自己的测试

新增性能测试的类

using UnityEngine;
using System.Diagnostics;// 用于性能测试的类
public class BenchMarker : MonoBehaviour
{[Range(0, 1000000)][SerializeField] private float _iterations; // 迭代次数private BenchMarkTest _benchMarkTest; // 性能测试对象private Stopwatch sw; // 计时器// 在启动时获取BenchmarkTest组件private void Awake(){_benchMarkTest = GetComponent<BenchMarkTest>(); // 获取BenchmarkTest组件}// 执行测试的方法public void RunTest(){sw = Stopwatch.StartNew(); // 创建并启动计时器for (int i = 0; i < _iterations; i++){_benchMarkTest.PerformBenchmarkTest(); // 执行性能测试}sw.Stop(); // 停止计时器UnityEngine.Debug.Log(sw.ElapsedMilliseconds + "ms"); // 输出测试时间}
}

Vector2.Distance 和 sqrMagnitude哪个好?

在Unity中,Vector2.Distance 和 sqrMagnitude 都是用来计算向量之间距离的方法,但它们的性能特性略有不同。

新增脚本,这里距离判断我们使用了Vector2.Distance,实际它的性能很差,因为它在内部计算中使用了开方运算 Mathf.Sqrt,开方运算通常比较昂贵,尤其是在大量计算时会消耗较多的计算资源。
在这里插入图片描述
点击测试
在这里插入图片描述
可以看到它平均需要执行390毫秒左右
在这里插入图片描述
我们现在换成性能更高的办法.sqrMagnitude进行距离判断,sqrMagnitude 属性返回向量的平方长度,与Vector2.Distance 方法不同,sqrMagnitude 不进行开方操作,因此它的计算代价更低。
在这里插入图片描述
重新测试发现,平均快了几毫秒左右
在这里插入图片描述
事实证明,我们可以继续使用Vector2.Distance 进行距离计算,因为它的可读性更高且对性能的影响似乎可以忽略不计

动画切换优化

通常我们都是这样进行动画切换
在这里插入图片描述
测试效果
在这里插入图片描述
但是其实有更好的办法,其实Unity获取这个动画字符串后会在幕后对其进行哈希处理,所以之后我们可以通过只做一次来节省时间,所以在这里我们可以提前对动画字符串进行哈希处理
在这里插入图片描述
可以看到,节约了近30毫秒的性能
在这里插入图片描述

shader属性优化

我们也想给改变shader属性来执行相同的操作,比如这里实现更改敌人的材质的颜色
在这里插入图片描述
改变颜色
在这里插入图片描述
测试结果,可以看到大概需要610ms左右
在这里插入图片描述
让我们尝试同样对字符串进行哈希处理
在这里插入图片描述
结果,发现速度加快了将近一半
在这里插入图片描述

URP渲染器资产优化

在URP渲染器资产中,如果你不需要深度纹理(Depth Texture)或不透明纹理(Opaque Texture )可以将其关闭,因为这些纹理最终会根据您的相机所看到的内容绘制纹理的深度或不透明度。如果你关闭它们,最终会优化大量不必要的内存
在这里插入图片描述

对象池优化

但如果您进行了大量实例化和销毁操作例如,如果您有一个带有大量子弹的游戏,那么您将需要实现个对象池系统,参考:【Unity小技巧】Unity探究自制对象池和官方内置对象池(ObjectPool)的使用

删除没必要的空函数

如果你的脚本中有空函数,请删除它们,每个函数也会有一点开销成本,即使它实际上没有执行任何内容
在这里插入图片描述

图片、音乐音效、贴图等素材压缩

合理压缩素材会很大的减低我们的内存

比如先看看我的背景没有压缩,它是6.8MB
在这里插入图片描述
低质量压缩它是1.1MB
在这里插入图片描述
ps:合理的使用压缩,确保它不会明显降低你的画面质量

ScriptableObject优化参数

不同的敌人实例之间更改这些变量,现在当我点击播放时,这些脚本中的每一个都将有自己的实例,并且在这些类实例中的每一个上这些变量将在内存中拥有自己的副本,并且对于这种情况完全是浪费
内存中拥有自己的副本,并且对于这种
这里我们可以使用ScriptableObject
在这里插入图片描述
配置
在这里插入图片描述
这样我们就不会为这些变量的创建数十几个副本存放在内存中,它只是位于ScriptableObject上的一个副本,每个敌人都只指向该ScriptableObject的对象

即使你想要实现不同的敌人配置,你也只需创建另一个ScriptableObject的对象资产,绑定它并修改参数即可
在这里插入图片描述

参考

https://www.youtube.com/watch?v=kJ5I9md9NG4

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

http://www.khdw.cn/news/27457.html

相关文章:

  • 重庆渝北网站建设行业网站网址
  • 50万做网站国外推广都是怎么推广
  • 网站开发 工具18款禁用软件黄app免费
  • 做网站换服务器怎么整自媒体seo是什么意思
  • 夫妻做网站重庆网站排名
  • wordpress 视频不播放厦门seo优化外包公司
  • 龙岗中心城网站建设网络营销知识点
  • 有个印度做网站的天天找我软文范文
  • 直播秀场网站开发百度推广步骤
  • 大连龙彩科技的网站在谁家做7个湖北seo网站推广策略
  • 温州专业营销网站建设国家免费培训机构
  • 安卓做网站太原网络推广价格
  • 东昌府聊城做网站费用网络做推广公司
  • htm网站模板济南优化网络营销
  • wordpress中的角色浙江专业网站seo
  • wordpress版块插件惠州自动seo
  • 网站字体排行榜哪个网站最好
  • 广东网站制作多少钱长沙seo培训
  • 网站权重优化短视频推广平台
  • 为客户做网站的方案全网营销有哪些平台
  • 建立网站要怎么做桔子seo查询
  • 普陀区网站建设前端企业网站推广方案设计毕业设计
  • 太原建站网页建设网络广告营销典型案例
  • 无锡做网站设计的企业最新的疫情情况
  • 七米网站建设推广优化每日财经要闻
  • 邛崃做网站友情链接的四个技巧
  • wordpress下载站插件南昌seo全网营销
  • wordpress即阅文教程网站优化快速排名软件
  • 网站空格 教程百度指数下载
  • 济南房地产新闻整站优化 mail