M'amusant avec les EditorWindow je me posait une petite question. Est-il possible de récupérer les valeurs (visuel) d'une classe pour les utiliser depuis un EditorWindow se trouvant dans une autre class ?
Voyons cela comme un Hub si je peux dire cela ainsi. L'EditorWindow MonEditeurWindow serait le centre et par appels, lui greffer des données ! Je vais faire un petit code rapide pour montrer l'idée.
PS : Etant au boulot, le code ci-dessous est écrit à la levé, normalement il n'y a pas d'erreur je pense.
Code : Tout sélectionner
using UnityEditor;
using UnityEngine;
class WindowTest : EditorWindow
{
private string titleCn1;
[MenuItem("Window/WindowTest", false, 801)]
private static void Init()
{
WindowTest windowMManager = EditorWindow.GetWindow<WindowTest>(typeof(WindowTest));
windowMManager.title = "Title Window";
}
private void OnEnable()
{ }
private void OnGUI()
{
// Du contenu normal
EditorGUILayout.BeginHorizontal();
{
GUILayout.Button("#Button");
}
EditorGUILayout.EndHorizontal();
// Du contenu Dynamique
OtherContent();
}
private void OtherContent()
{
//... Charger du Contenu existant dans une autre classe (classe de stockage ?)
if (titleCn1 == "Content 1")
{
}
else if (titleCn1 == "Content 2")
{
}
// Etc Etc (bon ce sont des conditions simples pour l'exemple)
}
}
Edit : Lorsque je parle de données externe, ce ne sont donc pas des données comme le xml etc.. En fait ce sont des Fake-EditorWindown (façon de dire). Les classes contiennent dans une "method" du contenu comme "GUILayout, GUI, EditorGUILayout". Je tenais juste à préciser au cas où pour éviter toute confusion ^^
Edit 2 : Je viens de penser à une chose. Bien que là pas sûr de comment faire. Est-il possible de, en premier on prépare un OnGUI dans notre class EditorWindow assez simple et on override depuis l'extérieur ? Mais du coup, les classes qui override vers notre EditorWindow devrait être subnommé comment ? (Désolé je ne me souviens plus de comment ça s'appelle ce qu'on écrit à droite du nom de notre classe. (ex: class notre : cetruclà {} )
--
Une autre petite question pour la route, est-il possible de récupérer depuis une Class les informations de l'instance d'un EditorWindow (si il est chargé bien entendu) sans devoir passer par CreateInstance ou New (bien que New se fait rappeler à l'ordre par la console et demande ScriptableObject.createInstance() vu qu'il point un EditorWindow) ?
Le souci c'est que hormis créer une instance pour récupérer la valeurs qu'il détient je ne vois pas comment faire. Car créer une instance pose le souci que il va "doubler" (de manière invisible) la fenêtre EditorWindow et lorsqu'on voudra fermer cette dernière dans Unity, une Instance existera toujours et donc il faudra recharger le Layout d'Unity pour voir un message d'erreur dans la console comme quoi une erreur de Destruction de Fenêtre est survenue ! (Failed to destroy editor windows: #1)
En espérant que l'idée est assez claire (dans l'ensemble au moins).
Merci