unity中场景特效优化

本文探讨了Unity中大量粒子系统对性能的影响,特别是摄像机范围外仍在更新的问题。通过编写脚本利用OnBecameInvisible()和OnBecameVisible()函数,当粒子系统不可见时停止更新,以减少不必要的CPU开销,适应页游平台的性能需求。实现方法是将粒子系统放在带有MeshRender和MeshFilter组件的游戏对象下,并在适当时机调整子物体的活跃状态。
摘要由CSDN通过智能技术生成

在美术制作场景的过程中,会使用到大量的粒子系统。比如场景中的火把。在我们的一个地下城场景中,美术们放置了大量的火把。整个场景中的各个地方,有100来个火把。

unity中,在摄像机范围外的粒子系统虽然不会被绘制。但是update是一直持续的。这也就意味着,这100多个火把,不论是否可见都在更新。

这个设计应该是很不合理的,在我看过的其他引擎中,都会有一个开关,来控制不可见的粒子系统是否需要update。有的粒子系统在不可见的时候需要更新,比如爆炸。有的不需要更新,比如火堆火把。

为了避免不必要的update开销,尤其是最后游戏是要发布到页游平台(web player只能使用一个cpu的核)。于是写了一个脚本,控制不可见的粒子系统就不更新。

该脚本主要是用到了2个MonoBehaviour的函数。OnBecameInvisible() 当变为不可见   和   OnBecameVisible() 当变成可见。 

要这2个函数起作用的前提是,该Game

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值