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>()方法

相关推荐
2601_962122973 分钟前
解决 IntelliJ IDEA 中 Tomcat 日志乱码问题的详细指南
java·tomcat·intellij-idea
luj_176810 分钟前
断舍离中的项目管理智慧
c语言·开发语言·c++·经验分享·算法
码视野13 分钟前
基于 Spring Boot + Vue3 的【城市雨污水管网液位淤积溯源与立交桥下穿隧洞防汛排涝智控中台】设计与实现(含PRD/三端高保真源码/大屏)
java·前端·人工智能·spring boot·后端
老王爱玩车15 分钟前
关于函数递归的优缺点分析
开发语言·数据结构·学习·算法
Zzzzmo_17 分钟前
Maven+SpringBoot
java·spring boot
Dovis(誓平步青云)26 分钟前
同一条路线在手机和平板上怎样换一种排版
android·开发语言·数据库·智能手机·音视频
thefool11226628 分钟前
无重复字符的最长子串
java
OPEN-F31 分钟前
C++进阶教程:文件流与字符串流
开发语言·c++·算法
2601_9669496535 分钟前
9:25-9:30 如何获取 A 股开盘基准价?QuantDash Python SDK 实战初始化量化策略状态
开发语言·人工智能·python·量化·quantdash·量化数据源
2601_9621896036 分钟前
【SpringCloud】Gateway
java·spring cloud·gateway