Unity C# 影响性能的坑点

c++用的时间长了怕unity的坑忘了,记录一下。

  • GetComponent最好使用GetComponent<T>()的形式,

  • 继承自Monobehaviour的函数要避免空的Awake()、Start()、Update()、FixedUpdate().这些空回调会造成性能浪费

  • GetComponent方法最好避免在Update当中使用,这个组件底层的实现是遍历所有组件,如果挂的组件比较多的时候会消耗内存空间。最好是在初始化的时候缓存一下

  • 尽量避免运行时候改变Transform的父节点。这块占开销比较大,通过GameObject.Instantiate(parent)当中直接设置Parent效率会比运行时候改parent效率高。

  • 避免运行时候使用Find和Unity当中SendMessage方法

GameObject.Find底层实现方法是遍历,开销非常大,只适用于场景当中只有非常少的情况。

  • 公共数据、配置表用Unity自带的ScriptableObject实现比较好,会减少序列化、反序列化的时间。

  • enum、Struct作为字典key值产生GC,需要实现IEqualityComparer<T>()方法

相关推荐
yaoxin5211232 分钟前
276. Java Stream API - 使用 flatMap 和 mapMulti 清理数据并转换类型
java·开发语言·windows
Vic101015 分钟前
【无标题】
java·数据库·分布式
摇滚侠8 分钟前
Java 零基础全套视频教程,异常,处理异常,自定义异常,笔记 124-129
java·笔记
lsx20240612 分钟前
Chart.js 极地图
开发语言
爱吃山竹的大肚肚21 分钟前
在Java中,从List A中找出List B没有的数据(即求差集)
开发语言·windows·python
伯明翰java21 分钟前
【无标题】springboot项目yml中使用中文注释报错的解决方法
java·spring boot·后端
weixin_4624462322 分钟前
【原创实践】Python 将 Markdown 文件转换为 Word(docx)完整实现
开发语言·python·word
企微自动化25 分钟前
企业微信二次开发:深度解析外部群主动推送的实现路径
java·开发语言·企业微信
_修铁路的26 分钟前
【Poi-tl】 Word模板填充导出
java·word·poi-tl
武子康28 分钟前
Java-216 RocketMQ 4.5.1 在 JDK9+ 从0到1全流程启动踩坑全解:脚本兼容修复(GC 参数/CLASSPATH/ext.dirs)
java·大数据·分布式·消息队列·系统架构·rocketmq·java-rocketmq