Unity控制物体显示与隐藏方法及优化总结

Tandre的碎碎念:我开始用Unity做项目接触最早的接口就是Unity的GameObject的SetActive接口,当时甚至只用这一个接口就解决了一个项目中所有关于显示与隐藏的问题,但实际上它的问题很多,很多时候需要尽量避免使用或避免直接使用,这篇博客就记录下关于显示与隐藏的优化问题。

SetActive接口

可以说是最常用的控制显示与隐藏的接口了,但往往并不推荐使用

示例代码
GameObject go
go.SetActive(true);
go.SetActive(false);
问题

1.会导致网格重建,触发Unity的垃圾回收机制(GC),总之很影响性能
2.引起OnEnable和OnDisable的调用,会有一定的消耗

优化方案

因为对于该接口的GC问题很难解决,所以只能尽量的避免。

SetActive在底层会先对物体进行判断是否处于Active状态,而SetActive这个接口在调用时本身就是在C#层调用底层,所以为避免不必要的底层判断,可以在C#层对物体的Active状态进行判断。示例代码如下:

static public class MyTools
{
   
    public static void MSetActive(this 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值