如何修复实例化杀死我的性能

本文关键字:我的 性能 何修复 实例化 | 更新日期: 2023-09-27 18:07:40

我将实例化两组游戏对象,每组50个。

private Enemy e1, 
              e2;
private Stack stack1, 
              stack2;

for(int i = 0; i < 50; i++)
    stack1.Push(Instantiate(e1));
for(int i = 0; i < 50; i++)
   stack2.Push(Instantiate(e2));

这个代码减慢了我的场景加载时间。有更好的方法来做到这一点吗?


的重要信息

我在加载场景后立即使用对象。我在所有的场景中都重复使用它们,所以我从不破坏它们。每个对象在Awake()中只有很少的代码。

如何修复实例化杀死我的性能

你可以在场景开始时实例化对象,停用它们,只在需要时激活它们。这样,在开始时就会出现延迟,而通常等待几秒钟是没有问题的。

另一种方法是实例化GameObjects,直到你达到以毫秒为单位设置的时间值,然后停止直到下一帧。这可能起作用,也可能不起作用,这取决于你在做什么。

如果您实例化的实际对象经常被使用,但只持续很短的时间,您可以像我的第一种方法那样做,并在需要时重用它们。搜索"unity Object Pool",你会得到一些不错的结果。