需求:使用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
如果在没完成数据之前使用数据,那么数据得到将会不正确,建议做个标志位,数据处理完回调处理逻辑。