从另一个场景访问CustomEditor Inspector值

时间:2013-04-30 18:23:36

标签: c# editor unity3d inspector

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

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

有什么想法?谢谢!

1 个答案:

答案 0 :(得分:2)

  

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

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

如果你需要在场景之间共享对象,你有2种方法可以做到:

  1. 如果您的Component附加到GameObject,请使用Prefab作为您的SpawnPoint Manager。
  2. 如果你不想/可以使用GameObject来存储你的SpawnPoint Manager(我不认为是这种情况),你可以考虑使用AssetDatabase。基本上,您可以在其中存储从ScriptableObject派生的每个可序列化类。
  3. 在您的情况下,我会做的或多或少是:

    • 创建一个空的GameObject,附加一个名为SpawnPointManager的{​​{3}}。
    • 从创建的Prefab创建GameObject
    • Prefab instance经理{/ 1}}放入所有场景。
    • 最终定义自定义Component,以便从自定义检查器修改SpawnPointManager Component

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