繁体   English   中英

Unity 5 C#-如何更改场景并从上一场景导入所有资源

[英]Unity 5 C# - How to Change Scenes and Import all Resources from Last Scene

我不确定如何切换场景并带走所有资源。 我确实知道在加载新场景时,先前的场景在加载时会被破坏。 我已经用DontDestroyOnLoad()探索了一些东西,但是对我想做的事却不走运。

我试图使我的播放器控制器成为预制件,然后将其放到下一个场景中。 但是,由于有许多脚本,我返回了很多错误提示。 主要是检查站,HP栏甚至武器之类的东西。

我需要知道的是如何将所有内容导入下一个场景。 如何做到这一点而无需重新编码甚至重新制作我需要的所有东西?

如果需要从上一个场景导入每个对象,那么创建一个新对象有什么意义呢?

您可以做的就是将对象位置保存到文件中,然后将该文件重新加载到下一个场景中,或者再次尝试使用DontDestroyOnLoad();

我建议检查有关此功能的Unity文档。

如果您不希望在场景更改时破坏单个对象,则在Unity的void Awake()函数上进行DontDestroyOnLoad(this.gameObject);

您正在寻找LoadSceneMode.Additive 这是LoadScene方法的第二个参数,它将新场景加载到当前场景中。

您能否提供更多信息? 我问是因为从您的描述看来

DontDestoryOnLoad

应该完成您想要的,但是您说没有。 只要使用该方法将包含要保存状态的组件的对象持久保存到下一场景,那么所有这些组件的状态也应持久保存。 请详细说明,我们可能会提供更好的答案。 至于如何使用它来保存每个游戏对象的状态:

GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType<GameObject>();
foreach(GameObject go in allObjects) {
   if (go.activeInHierarchy) { /* and any other logic you want. Maybe like !isTerrain */
      Object.DontDestroyOnLoad(go);
   }
}

对于上面的代码,我从https://answers.unity.com/questions/329395/how-to-get-all-gameobjects-in-scene.html中删除了它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM