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

相关推荐
A_aspectJ9 分钟前
【Java基础开发】 基于Swing GUI 组件实现图书管理系统
java·开发语言
陌殇殇18 分钟前
004 Spring AI Alibaba框架整合百炼大模型平台 — MCP服务
java·spring·ai
014-code19 分钟前
JUC 常用工具类:CountDownLatch、CyclicBarrier、Semaphore
java
William Dawson22 分钟前
【一文吃透 Spring Boot 面向切面编程(AOP):实例\+实现\+注意事项】
java·spring boot
xyq202424 分钟前
Font Awesome 加载中图标
开发语言
fengxin_rou24 分钟前
JVM 核心笔记:对象创建、生命周期与类加载器详解
java·jvm·笔记
one_love_zfl36 分钟前
java面试-JVM篇
java·jvm·面试
skiy36 分钟前
Spring之DataSource配置
java·后端·spring
石榴树下的七彩鱼42 分钟前
医疗票据OCR识别API实战:从医保结算单到结构化数据提取(附Python/Java示例)
java·人工智能·python·ocr·api·ocr识别·医疗票据识别
Cat_Rocky44 分钟前
k8s-单Master集群部署(简练理解)
java·容器·kubernetes