耗时来源
GameObject的Active/Deative本身耗时不多,主要是内部组件OnEnable/OnDisable的耗时
替代方案性能
- 移出屏幕
- 修改layer,cull不渲染(如果同时也要屏蔽点击事件)
1200个简单Canvas的性能测试
- Canvas中有Image、Text、ScrollRect、Button等常见组件
- EventUpdate事件是鼠标按在界面上时的耗时
- CPU耗时中ScrollRect.LateUpdate占用8ms,不同条件没有显著变化
- CPU耗时:Cull掉后最少,不Cull时在屏幕外耗时较少
- GPU耗时:基本同CPU,Cull掉后毫无消耗
- EventUpdate耗时:在屏幕外时耗时较少,其他情况比较难以解释
不知道多少个简单Image的性能测试
第2行第3列数据错了,是110ms
- GPU耗时:在屏幕外时几乎不耗时,Cull不Cull无所谓
- EventUpdate耗时:在屏幕外时耗时较少,Cull不Cull无所谓
具体方案
项目中每个界面是一个Canvas,采取移出屏幕+Cull Layer双方案
界面内元素只采取移出屏幕方案
localPosition和layer修改瞬间耗时未测试,但似乎很少