2016-05-05 1 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(); 

     } 

Cet extrait de code s'exécute sur le bouton du mode éditeur. Comme je clique sur le bouton, il fait une scène vide. Il invite la fenêtre à entrer le nom de la scène et à enregistrer. Mais je veux fournir un nom en utilisant le code. Est-ce possible de travailler sans popup pour une saisie manuelle du nom de la scène? En outre, je veux ouvrir la scène hirarchey gameobject à la scène vide nouvellement créée (en utilisant le code ci-dessus).Créer une nouvelle scène de la hiérarchie sélectionnée GameObject

Répondre

2

Je pense que vous pouvez créer les GameObjects normalement, puis passer ensuite à la nouvelle scène à l'aide SceneManager.MoveGameObjectToScene:

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

Vous pouvez également régler le chemin SaveScene pour éviter l'invite de nom.

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

+0

Merci BIVIS mais où trouver la scène nouvelle et lire toute la question s'il vous plaît –

+0

La méthode NewScene retourne la scène. Vous pouvez le stocker pour l'utiliser plus tard. J'ai mis à jour ma réponse en le montrant. Je vois que vous voulez le faire sans nom, où mettez-vous ce code? – Bivis

+0

Salut, je pense que si vous définissez le chemin sur SaveScene(), vous pouvez éviter l'invite de nom. Réponse mise à jour à nouveau – Bivis