以下全是隐藏开启界面 ,不包括实例化界面操作
先说关闭界面
采用GameObject.SetActive 方法 ,消耗的时间 6.70, 产生 gc 384B
解决思路,1、移除视野? 不行,drawCall 没有任何变化
2、缩放大小 0 0 ? 可以,万一里面有不可缩放的粒子特效怎么办?有待商榷
3、给当前组件加canvas,设置canvas的组件可用性,试试 --- >
4、百度搜的 Canvas Group 也试试 ,对比一下
时间 2.00 gc : 6.8KB 时间减少了4.7 ms ,gc增加了 6416B , 干的漂亮 ,有读者要问了,博主你在玩蛇皮?
开界面 对比 GameObject.SetActive() 和 Canvas.Enable --- >
GameObject.SetActive 时间 28.02 ms , GC : 50.6KB , Canavas enable 时间 8.13 GC :30.4KB
Canvas.enable 完胜 ,鼓掌 !!!
但是 GC 时间都那么高啊 啊啊啊 ,怎么干掉 ?
百度是我们的好朋友 ,继续搜索 Canvas Group - --> 试 !
相比月 canvas enable -- > 开界面 5.5ms GC :44.7 又上去了, 关界面 快了0.87ms , 但是多了6.8kB .
说好的 比 enable 好呢, 只是时间调用上快了,GC反而多了
2020/8/11更新
使用Layer层,通过设置canvas的layer层,并禁用 /启动Graphic Raycaster 达到无消耗开关界面
可以看出,基本无消耗,下面的消耗点,是我用dotween做了动画。
综上所述 : 采用layer层 可以无消耗开关 已经实例化的界面。