Unity 处理大量GCAlloc

需求:使用unity mono做大数据可视化分析,难免一帧里生成大量的实例(万级别以上)
设计:分帧生成

在这里插入图片描述

没使用分帧前这个值是几万级别,掉帧到几帧.使用后性能提高了

		public void CreateNormalBoll(uint day,long number)
        {
    
    
            //for (int i = 0; i < number; i++)
            //{
    
    
            //    normal_bolls.Add(new NormalBoll(day));
            //}
            index = 0;
            StartCoroutine(CreateNormalBollIE(day, number));
        }
        int index = 0;
        //每帧生成1000个
        private IEnumerator CreateNormalBollIE(uint day,long number)
        {
    
    
            
            for (int i = 0; i < number; i++)
            {
    
    
                index++;
                normal_bolls.Add(new NormalBoll(day));
                if (index % 1000 == 0)
                {
    
    
                    yield return null;
                }
            }
        }

使用后出现的bug

如果在没完成数据之前使用数据,那么数据得到将会不正确,建议做个标志位,数据处理完回调处理逻辑。

猜你喜欢

转载自blog.csdn.net/qq_41179365/article/details/119646325