假设我有一个场景,其中包含多个网格,例如树、盒子等。我们称它为级别 1。
在我玩完第 1 级后,我会像这样切换到第 2 级。
SceneManager.LoadScene (1, LoadSceneMode.Single); //level2 scene index is 1
关键是 2 级使用与 1 级相同的网格。它们是否被卸载 -> 重新加载?
我不是在谈论 DontDestroyOnLoad ,因为我不需要 2 级场景中相同的游戏对象实例。
我说的是每个对象(网格)的模型数据,而不是它们的实例。我知道实例已被删除,但我认为 Unity 以某种方式知道下一个场景使用相同的网格并保留它们。我只需要知道在切换场景时 Meshes 是否被卸载和重新加载。
最佳答案
一旦您使用 LoadScene
更改场景,您没有调用 DontDestroyOnLoad
的对象将被销毁(就像您调用它们一样 Destroy
全部),所以是的,重新加载。然后它们被销毁(如果它们出现在下一个场景中)它们被重新实例化。
如果您对场景中实例化的特定对象进行编辑,则这些编辑属于该对象。
如果您多次加载同一场景,那么这个特定对象将有您的编辑。但是,如果您加载具有此预制件的不同场景,则预制件将是一个没有编辑的新场景。
如果你想让所有实例化的对象都像这个对象,你必须编辑预制件。为此,您只需单击“应用”按钮即可。
这将使所有实例化的对象都具有编辑。
如果您希望某些对象进行编辑而另一些对象不进行编辑,您可以制作一个单独的预制件,只需将此对象的“名称”从层次结构拖到您的项目文件夹中。您刚刚创建了一个新的预制件,您可以使用它了。
另请记住,这不适用于在游戏中完成的编辑。这些是您在场景 View 中所做的编辑(作为开发人员而不是游戏玩家)。游戏 View 编辑(例如,如果玩家压扁立方体)在游戏结束后丢失。
https://stackoverflow.com/questions/41411062/