找回密码
 立即注册
查看: 168|回复: 0

[简易教程] Unity性能优化:Unity程序员要注意的编码规范

[复制链接]
发表于 2023-1-2 20:19 | 显示全部楼层 |阅读模式
前言



对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀
避免抽象类


理解Unity main Loop, Update与FixedUpdate


Update和FixedUpdate之间的差别极其重要。FixedUpdate方法被项目的Fixed Timestep值控制。该值默认为0.02(50Hz)。


这意味着Unity保证FixedUpdate方法每秒调用50次,因而一帧中有多次调用是可能的。如果你的帧数下降了,这个问题可能会更加严重,因为一帧中FixedUpdate调用的次数变多了。这将可能导致我们平时称之为“死亡螺旋”的恶性循环发生,因为它有时会展现出严重故障的形态。


选择合适的帧数


在Unity 2019.3 beta开始支持的全新的On-Demand Rendering功能可以让你降低渲染的频率同时保证其他系统,如输入系统,不受影响。


避免同步加载


将你的项目设计成异步的还有其他的好处。用户交互可以保持流畅。与服务器的认证和交换过程可以与场景和资源的加载同时进行,因而减少整体的启动和加载时间。完全异步的设计还意味着将来将你的项目移植到全新的Addressable Asset System会更加简单。
使用预分配对象池


尽可能减少使用标准behavior方法


这对于Update()方法来讲特别麻烦。如果你的项目里有大量对象都有Update()方法,这些CPU的开销可能会上升到对性能有影响的地步。考虑使用“管理者模式”:一个或多个管理者类实现一个Update()方法来负责所有对象的更新。这会极大减少原生代码和托管代码之间的通信次数。更多细节请看这篇博客文章。
也一样决定你项目中那些系统需要每帧更新。游戏系统通常可以运行在更低的频率,轮流更新。一个简单的例子就是两个系统在每两帧交替更新。
我们亦推荐使用时间分片,既一个负责大量对象的系统将更新工作分摊到多个帧中,在每一帧中仅更新一部分对象。这种设计同样可以帮助减少CPU负担。


不要在Update里面去频繁的找节点或组件


避免运行中的字符串操作


避免不必要的debug日志


不要在重点代码部分使用LINQ查询


避免静态数据解析


用不分配内存的API


好,今天的Unity程序员编码规范就介绍到这里,还有更多的一些技巧,掌握这些技巧主要是要注意一些基本的原理原则,而编程技巧就是围绕这些基本的原理原则。同时平常我们多积累,多思考,能写出高效的优雅的代码。关注我,可以学习到更多的Unity架构师的实战教程。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-30 14:56 , Processed in 0.099742 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表