先记录下 游戏优化的 草稿

本文探讨了游戏优化的关键策略,包括批处理对象以减少渲染同步开销,使用自定义Update来平滑加载过程,禁用未使用的脚本和对象以节省资源,以及避免运行时对Transform的修改。此外,还建议避免使用Find()和SendMessage(),提倡使用更高效的数据结构,优化GameObject引用检查,并介绍了多种游戏性能提升技巧,如缓存组件引用,减少内存分配和计算,以及使用Singleton组件和全局消息传递系统。
摘要由CSDN通过智能技术生成

-----------------

-------------

批处理对象指的是网格、顶点、边、UV坐标和其他用于描述3D对象的不同数据类型的大集合。

触发渲染状态同步的操作包括但不限于:立刻推送一张新纹理到GPU中,修改着色器、照明信息、阴影、透明度和其他图形设置。一旦配置了渲染状态,CPU就必须决定绘制哪个网格,使用什么纹理和着色器,以及基于对象的位置、旋转和缩放(这些都在一个4*4的矩阵中)决定在何处绘制对象,然后发送指令到GPU以绘制它。为了是CPU和GPU之间的通信保持活跃,新指令被推入CommandBuffer的队列中,这个队列包含CPU创建的指令,以及GPU每次执行完前面的命令后从中提取的指令。

------

叠加、异步地加载场景

创建自定义的Update,1、每次计时器过期或协程触发时,生成一个随机等待时间 2、将协程的初始化分散到每帧中,这样每个帧的调用数量进行了限制  3、将调用更新的职责传递给某个God类,该类对每个帧的调用数量进行了限制。 做虚拟接口,和管理类里的Register和UnRegister和调用接口里方法的逻辑等。

----------

禁用未使用的脚本和对象:

1、通过可见性禁用对象:(视椎剔除,遮挡剔除)OnBecameVisible(){ gameObjcet.SetActive(true); }   OnBecameInvisible(){ gameObjcet.SetActive(false); }

2、通过距离的平方 禁用对象 Vector3.sqrMagnitude 长度平方, Vector3.Distance(a,b) is the same as (a-b).magnitude

3、最小化反序列化行为:减小序列化对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值