2

所以我使用 CustomEditor 设置来制作 Spawn Point 管理器。我已经设置好在场景中添加生成点(我们称之为房间 1),那里没有问题。接下来我需要做的是加载一个不同的场景(房间 2)并让门交互参考房间 1 的生成点。除了如何获取房间 1 中的生成点列表之外,我已经设置了方程式的所有部分在我编辑 Room 2 场景时。

在编辑 Room 2 场景时,有没有办法调用 Room 1 场景中对象中设置的值的查询?请记住,这是在编辑器/检查器中,而不是在应用程序运行时,所以我认为播放器首选项和 DontDestroyOnLoad 在这里没有帮助。

有什么想法吗?谢谢!

4

1 回答 1

2

在编辑 Room 2 场景时,有没有办法调用 Room 1 场景中对象中设置的值的查询?

不,你不能。编辑器让您同时打开一个场景。您可以将不同的场景视为不同的世界。您可以使用EditorApplication.OpenSceneAdditive将场景的内容添加到当前打开的场景中。顺便说一句,这对您的情况没有用,因为添加的场景对象被复制到打开的对象中。

如果您需要在场景之间共享对象,您有两种方法可以做到这一点:

  1. 如果您的组件附加到游戏对象,请为您的 SpawnPoint 管理器使用预制件。
  2. 如果您不想/可以使用 GameObject 来存储您的 SpawnPoint 管理器(我不认为是这种情况),您可以考虑使用AssetDatabase。基本上,您可以在其中存储从ScriptableObject派生的每个可序列化类。

在您的情况下,我或多或少会做以下事情:

  • 创建一个空GameObject的并附加一个名为SpawnPointManager.
  • Prefab从创建的GameObject.
  • Prefab instance你的经理的所有场景都放进去。
  • 最终定义一个自定义编辑器SpawnPointManager Component以从自定义检查器修改您的

由于所有的Prefab instances都链接到同一个Prefab,即使它们在不同的场景中,基本上共享相同的对象(可从检查器访问)。因此,如果您修改prefab它自己(或它的一个实例并将修改应用回链接的预制件),您的所有预制件实例(即使在不同的场景中)都会看到修改并相应地更新到链接的预制件

于 2013-04-30T22:24:53.333 回答