Comment écrire un éditeur de l'interface Graphique ou les structures en Arbre
Unity3D
's Mecanim
animations système a une coutume EditorWindow
qui permet de définir un arbre (un mélange de l'arbre dans ce cas) complète de l'interface graphique.
Il ressemble:
Il offre la possibilité de créer des nœuds (les états) et de les connecter entre eux (les transitions).
Maintenant, je suis le développement de certains de graphique et de et de la structure de l'arbre et j'aimerais écrire un éditeur de l'extension afin de permettre à mes game designer pour peupler ces structures.
Je veux assez plus recréer exactement un EditorWindow
comme l'un des Mecanim animateur (figure ci-dessus).
Ma question est: existe-il des éléments que je peux utiliser pour une telle tâche? Est-il builtin classe utilisée pour le dessin et les boîtes de raccordement et de la flèche? Ou j'ai besoin d'écrire complètement les éléments d'interface graphique par mon propre?
- Je ne sais pas si cela vous aide beaucoup, mais par exemple, voici un joli post que j'utilise pour faire de bézier lignes dans mon éditeur de windows. Il sert comme un bon exemple.
- merci.. très intéressant. Je vais le regarder.
- merci pour le lien aussi! Je regardais ce un intérêt, depuis que je suis désireux quelque chose d'assez semblable à la MechanimEditor pour mes machines d'état.
- Eh bien tout ce que je vois sont des lignes, des flèches et des zones de texte. Si vous avez une collection d'entre eux, vous avez besoin d'écrire quelque chose qui peut créer et stocker une collection
- J'ai trouvé un moyen plus simple de dessiner des lignes de courbe de bézier dans l'éditeur. Si vous surrond Poignées.DrawBezier avec des Poignées.BeginGUI/EndGUI vous pouvez dessiner dans une fenêtre de l'éditeur à l'aide de l'unité de fonctions. Je vais poster un extrait bientôt.
- o_O Très sympa, je serais certainement l'amour pour voir un extrait.
- voici l'extrait de code. Désolé d'être trop tard, mais j'ai eu un horaire très chargé derniers mois...
- Nice, c'est hella plus propre.
Vous devez vous connecter pour publier un commentaire.
Je ne demande pas "pour un trouver un outil, une bibliothèque ou un favori off-site de ressources". Je voudrais savoir comment reproduire un
Mecanim
comme éditeur de graphiques à l'aide deUnity3D
de l'API ou de certains composants fournis par le moteur lui-même (désolé si la question n'était pas claire).Voici ma réponse:
Non, il n'est pas un composant utilisable comme c'est de dessiner ce genre de graphique, mais il est très facile d'écrire votre propre. Voici un extrait avec un exemple simple utilisant déplaçable L'interface graphique.Fenêtre pour représenter les nœuds et Les poignées.DrawBezier pour dessiner les contours:
Vous êtes mauvais mec. Tout ce que vous voyez dans UnityEditor devez disposez d'un code quelque part. Votre MecanimEditor est dans l'espace de noms UnityEditor.Les graphiques.AnimationStateMachine.
Étendre GraphGUI trouvé dans UnityEditor.Les graphiques. Cette classe est responsable de l'élaboration graphique.
Créer de nouveaux EditorWindow.
Créer le diagramme de la structure. Il contient les nœuds et les arcs entre les nœuds.
Tracer Le Graphique.
Remplacer NodeGUI ou EdgeGUI pour plus de style et de contrôle de dessin.
Copier coller le code d'UnityEditor.Les graphiques.AnimationStateMachine.GraphGUI style fait dans NodeGUI et EdgeGUI.
Ce sujet est assez compliqué, mais si vous voulez une belle référentiel de démarreur scripts découvrez ce fil de discussion du forum sur l'Unité du site officiel http://forum.unity3d.com/threads/simple-node-editor.189230/
*Mise à jour: Quelqu'un a posté une complexe série de tutoriels, fortement détaillant la façon de créer exactement ce que vous avez décrit. Profitez de https://www.youtube.com/watch?v=gHTJmGGH92w.
Edit: j'ai écrit entièrement de fonctionnement de l'Unité graphique de l'éditeur dans un dépôt GitHub. Principalement axé sur les arbres de compétences. Il n'est pas parfait, mais il montre qu'un système graphique de l'éditeur pourrait ressembler. Code Source dans le lien suivant.
https://github.com/ashblue/unity-skill-tree-editor
Vous pouvez essayer de fabriquer un Objet pour les données à l'intérieur de chacun des objets de l'arborescence.
Ensuite, vous pouvez essayer d'utiliser le Système.Dessin pour créer un contrôle personnalisé(carrés dans l'image), également utiliser le Système.Dessin pour créer ces flèches pour chaque objet de l'arborescence. assurez-vous que chaque DataObject a des ID ou des renseignements sur le lieu où les flèches doivent être de pointage.
Si vous avez besoin d'aide sur la création de contrôles personnalisés, j'ai utilisé ceci tutoriel sur YouTube dans le passé.
J'ai fait une interface pour la création de graphiques à l'aide d'un TreeViewer et checkboxers. Est basée sur une "liste d'adjacence" idée. Si vous avez coché la case de la "racine" vertex vérifié, il est adjacent à l'autre vertex, si vous voulez juste un peu de vertex à côté, puis vous sélectionnez chacun separetaly. J'ai développé ce pour java, mais je crois qu'il pourrait travailler pour votre but. Voici une image que j'ai de l'espoir, qui précise mon idée.
http://i.stack.imgur.com/3PhT9.jpg