您的位置:首页 > 文旅 > 旅游 > 最牛餐饮营销手段_如何设计一个企业_互联网营销的方法有哪些_cpa游戏推广联盟

最牛餐饮营销手段_如何设计一个企业_互联网营销的方法有哪些_cpa游戏推广联盟

2024/12/23 9:24:10 来源:https://blog.csdn.net/2301_76618920/article/details/144213065  浏览:    关键词:最牛餐饮营销手段_如何设计一个企业_互联网营销的方法有哪些_cpa游戏推广联盟
最牛餐饮营销手段_如何设计一个企业_互联网营销的方法有哪些_cpa游戏推广联盟

原因

  1. 性能开销SetActive方法会导致C#层到Native层的穿梭调用,这比C#层内的速度慢。频繁地调用SetActive可能会导致性能问题,尤其是在大量对象需要被激活或禁用时。

  2. Canvas重建SetActive会导致Canvas抛弃其VBO(顶点缓冲对象)数据,重新启用Canvas会使Canvas(包括所有的子Canvas)强制进行rebuild和rebatch进程。如果这种情况发生的非常频繁,增加的CPU使用会造成应用程序的帧率卡顿。

  3. 触发GC(垃圾回收):UI元素的网格顶点数改变会造成堆内存分配,触发GC,导致耗时。这对UI元素进行位置移动不会造成堆内存分配,但是激活和禁用操作会。

  4. 生命周期事件触发SetActive(true)会触发MonoBehaviour.OnEnable()事件,而SetActive(false)会触发MonoBehaviour.OnDisable()事件,即使对象之前已经是激活或禁用状态。这可能会导致不必要的代码执行,增加开销。

  5. UI性能问题SetActive会触发子物体的OnEnableOnDisable方法,而且这两个方法是有GC的,使得整体带来了GC的消耗。

解决办法

  • 使用变量标识状态:在C#层设置变量来标识相应的GameObject处于Active还是非Active状态,避免对Active的对象进行SetActive(true),避免对非Active的对象进行SetActive(false)

  • 使用CanvasGroup:通过将UI元素的坐标移动到Canvas的范围之外的方法来显示与隐藏,避免SetActive的耗时以及SendWillRenderCanvases的耗时。也可以通过CanvasGroup组件设置透明度的方式来进行显示与隐藏,这样可以避免SetActive引起的负载。

  • 优化Canvas分区:将要频繁变化的UI元素与不频繁变化的UI元素放在不同的Canvas中,减少UI元素变化时的耗时。

  • 使用Scale变换:手游项目中会把频繁需要显示出现的UI的Scale设为0,而不是使用SetActive

通过这些方法,可以减少SetActive的使用,从而优化性能和减少不必要的资源消耗。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com