2016-05-05 24 views
1
void OnGUI() { 

     GUILayout.Label("Hirarchey GameObject to Scene Conversion", EditorStyles.boldLabel); 
     gameObjectName = EditorGUILayout.TextField("Text Field", gameObjectName); 

     if (GUILayout.Button("Generate Scene")) { 
      EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); 
      EditorApplication.SaveScene(); 

     } 

Dieser Codeausschnitt wird auf der Schaltfläche für den Editormodus ausgeführt. Wenn ich auf den Knopf klicke, wird eine leere Szene angezeigt. Es fordert das Fenster auf, den Szenennamen einzugeben und zu speichern. Aber ich möchte den Namen mit Code angeben. Ist es möglich, ohne Popup für die manuelle Eingabe des Szenennamens zu arbeiten? Zusätzlich möchte ich hirarchey gameobject zu einer neu erstellten leeren Szene öffnen (mit dem obigen Code).Neue Szene der ausgewählten Hierarchie erstellen. GameObject

Antwort

2

Ich denke, dass Sie die Gameobjects normalerweise erstellen können, und dann bewegen Sie dann auf neue Szene mit SceneManager.MoveGameObjectToScene:

Scene newScene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); 
GameObject go = new GameObject("GameObject"); 
SceneManager.MoveGameObjectToScene(go, newScene); 
EditorApplication.SaveScene(newScene, path); 

Sie können auch auf SaveScene gesetzt Pfad den Namen Aufforderung zu vermeiden.

Docs: https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.MoveGameObjectToScene.html

+0

Dank BIVIS aber wo neu erstellt Szene zu finden und die vollständige Frage bitte –

+0

Die NewScene Methode wird wieder die Szene lesen. Sie können es speichern, um es später zu verwenden. Ich habe meine Antwort aktualisiert. Ich sehe, dass Sie es ohne Namensansage machen wollen, wo setzen Sie diesen Code ein? – Bivis

+0

Hallo, ich denke, wenn Sie Pfad auf SaveScene() setzen, können Sie die Namensaufforderung vermeiden. Aktualisierte Antwort erneut. – Bivis