【发布时间】:2020-03-26 00:37:54
【问题描述】:
我的游戏有一个家庭场景和两个游戏场景(SceneA 和 SceneB)。使用 SceneManager.LoadScene() 从主场景移动到场景 A 时,编辑器会冻结。
所以,我检查了 SceneA 的代码。然后我注意到编辑器被冻结在一个地方。
以下代码适用于场景A。
//SceneA Script
[SerializeField]
float range;
[SerializeField]
GameObject obj;
void Start()
{
Spawn();
}
void Spawn()
{
for (int i = 0; i < 99; i++)
{
Instantiate(obj, new Vector3(Random.Range(-range, range), 0.5f, Random.Range(-range, range)), Quaternion.identity);
}
}
如果我删除 Spawn(),它不会冻结。但我需要创建 99 个 obj 对象。 突然间它开始冻结,即使它是在不久前完成的。
此外,SceneB 在出现此问题之前一直正常加载,但现在当您在此问题后尝试 SceneManager.LoadScene(SceneB) 时,它会冻结。
这是一个 Unity 错误吗?是否涉及播放器设置? SceneB无法读取的原因是在SceneA中冻结时终止编辑器任务有问题?
我真的遇到了麻烦,因为我没有看到任何错误。请有人帮助我。
【问题讨论】:
-
好吧
Instantiating 100 个对象只需要一段时间。特别是如果所有这些对象也有一些我们不知道的组件,这可能需要一段时间......你是否确保生成的对象没有附加相同的脚本,并且每个对象都会生成另外 100 个对象,例如? ;)freeze是什么意思.. 它只是需要一些时间还是永远不会终止? -
是否反对从一开始就在场景中拥有所有这些对象并且只更新它们的位置?