2017-01-16 3 views
1

Je dois afficher et manipuler un objet Scène (à partir d'un nouveau SceneManager) dans un inspecteur. Même lorsque je tente de sérialisation à l'aideComment dessiner un objet Scène dans l'inspecteur Unity

[SerializeField] 
Scene scene; 

la scène ne montre pas encore dans l'inspecteur. Puisque SceneManager est relativement nouveau (Unity 5), il n'y a pas beaucoup d'informations et nous aimerions éviter de référencer des scènes comme des chaînes, comme nous le faisions auparavant.

Répondre

0

Comme indiqué dans le documentation l'objet Scène est uniquement une donnée d'exécution. Par conséquent, il n'est disponible que lorsqu'il est ouvert ou à l'exécution. Vous dessinez probablement un inspecteur personnalisé pour les champs que vous souhaitez manipuler.

Si vous souhaitez simplement obtenir les scènes définies dans les BuildSettings , vous pouvez utiliser le EditorBuildSettings.scenes dans l'espace de noms UnityEditor. Créez un champ inspecteur personnalisé (comme un Enum Popup) pour choisir uniquement par les scènes définies dans les BuildSettings. Vous pouvez également travailler avec SceneSetup que vous pouvez récupérer à partir de UnityEditor.SceneManagement.EditorSceneManager. Mais cela vous permettra seulement de manipuler les données chargées dans votre scène ou à l'exécution, aussi.

Vous pouvez créer une classe Wrapper pour l'objet Scene et dessiner un Property drawer personnalisé. Vous aurez alors besoin d'une classe pour gérer l'entrée de l'utilisateur dans les champs pour enregistrer correctement les données dans l'objet Scene réel.