apparence Prefab dans Scene

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Répondre
Avatar de l’utilisateur
blix
Messages : 27
Inscription : 15 Nov 2015 17:30

apparence Prefab dans Scene

Message par blix » 11 Déc 2021 00:48

Hello,
Je ne suis pas sûr si ce que je cherche à obtenir et faisable (noob inside)
Je vais décomposer mon problème pour être plus explicite :

Je fais un tower defense et j'ai créé un Prefab de tour,
ce Prefab de tour comprend :
> les différents type de tour
> les upgrades de chaque tour

Les types et les upgrades sont visuelles (hauteur, design, etc...)
Autrement dit, j'ai intégré dans mon Prefab les différents mesh de chaque situation.
A l'aide du script associé et en mode play j'arrive à modifier tout cela.

Ma question :
Est-il possible de modifier l'aspect de ces Prefab (type & upgrade) dans la scène à l'aide de l'Inspector.
En gros c'est pour mettre au point les levels avec des tours qui ont visuellement le bon design
(et pas la configuration visuelle du Prefab par défaut)

C'est purement pratique,
c'est juste pour mieux visualiser mes levels quand je les conçois dans la Scene
Il faut que je fasse un Editor pour cela?

Je ne sais pas si je suis très clair :roll:

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: apparence Prefab dans Scene

Message par jmhoubre » 11 Déc 2021 12:41

Bonjour, oui, il y a au moins 2 manières de le faire :
  • avec un script éditeur, qui permet en gros de surcharger la façon dont l'inspecteur affiche le prefab, mais je ne fais que des trucs basiques.
  • avec un scriptable object (SO), c'est assez simple. Il faut faire le script du SO : un enum avec les différentes tours, une méthode OnValidate contenant un switch avec les différentes caractéristiques de chaque tour (prefab, résistance, portée, dégâts, ...). Ou alors, une instance de SO par tour (plus besoin de OnValidate et de switch), un empty portant un script référençant le SO, et un enum avec les différentes tours.

Avatar de l’utilisateur
blix
Messages : 27
Inscription : 15 Nov 2015 17:30

Re: apparence Prefab dans Scene

Message par blix » 12 Déc 2021 21:47

Bonjour jm,
merci pour ton aide une fois de plus :-)

Intéressant le scriptable object,
je vais certainement m'en servir, bien pratique!
mais cela fonctionne qu'en mode play, pas en mode "Scene"
(Je sais que je ne suis pas clair, je veux dire en mode non play, dans la fenêtre Scene)

Je vais creuser pour le script éditeur, je vois beaucoup de choses.

J'ai d’ailleurs le même "soucis" avec le chemin de mon tower defense.
J'ai fait un Prefab "road" qui comprend toutes les droites avec différentes longueur,
ainsi que toutes les courbes avec les différents rayons.

Et j'aimerais pouvoir tracer le chemin de mes différents level,
en plaçant ce Préfab, et en pouvant visualiser sa configuration dans la Scene.
(en passif, pas en mode play)

Genre :
road_00 > droite > direction droit > longueur 1
road_01 > courbe > direction droit > virage droite > rayon 2
road_02 > droite > direction bas > longueur 3
road_03 > courbe > direction bas > virage gauche > rayon 2
etc...

Image


Et donc pouvoir ainsi visualiser & construire mes levels facilement.

Ça doit-être avec l'Editor Script,
mais je n'ai pas encore trouvé de sources qui relatent plus ou moins ma problématique.
blix

:gene:

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: apparence Prefab dans Scene

Message par jmhoubre » 13 Déc 2021 01:03

Bonsoir,
explique-moi un peu plus pourquoi tu considères que les SO ne fonctionnent pas en mode éditeur ? Je m'en sers tous les jours, alors je suis un peu étonné.

Exemple : j'ai un prefab Guerrier, avec un script attaché qui référence un SO WarriorStats. Ce SO contient notamment une variable level de type enum LevelType { Recruit, Trained, Veteran }, et un switch avec des stats selon le niveau, le tout dans une fonction OnValidate (). Quand je change le niveau en mode éditeur (non play si tu préfères), les stats du guerrier se mettent à jour.

Avatar de l’utilisateur
blix
Messages : 27
Inscription : 15 Nov 2015 17:30

Re: apparence Prefab dans Scene

Message par blix » 13 Déc 2021 01:15

Bonsoir jm,

j'ai regardé une vidéo de Brackeys sur les SO ou les Prefabs étaient statiques en mode éditeur.
J'ai du conclure trop vite la chose :rouge:

Ok, je vais potasser le sujet plus en profondeur,
je reviendrais donner des nouvelles.
merci encore,
blix

Avatar de l’utilisateur
blix
Messages : 27
Inscription : 15 Nov 2015 17:30

Re: apparence Prefab dans Scene

Message par blix » 15 Déc 2021 03:28

Hello jm,
bon effectivement ça fonctionne bien pour les tours.

Pour mon chemin, les SO sont presque too much,
J'ai juste 2 paramètres et un mesh.

Je ne veux pas abuser,
mais tu pourrais me détailler un peu plus, ta méthode avec un script éditeur,
je voudrais tester par curiosité et pour comparer avec les SO.

J'ai passé pas mal de temps à chercher sur le sujet,
mais c'est souvent assez complexe pour ce que je veux faire.
(je veux juste afficher le mesh de la route courbe avec le bon rayon)
(et/ou un mesh de route droite avec différentes longueurs)

Il faudrait créer un script "RoadEditor" dans un dossier Editor,
qui ne soit pas Monobhiaviour mais Editor avec le code approprié?
C'est ça la technique?
blix
:rouge:

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: apparence Prefab dans Scene

Message par jmhoubre » 15 Déc 2021 17:10

Bonjour,

comme indiqué plus haut, je ne fais que des choses basiques dans ce domaine, je n'ai pas encore pris le temps de mettre en pratique ce que j'ai pu voir dans cette série très complète de 2016 sur le sujet : Unity Editor Scripting Tutorials. L'auteur est indien (un vrai, de l'Inde), je n'ai pas été trop gêné par l'anglais. La série semble longue (et en réalité elle l'est :ugeek: ), mais les 7 premières vidéos devraient répondre à ton problème.

J'ajoute 2 vidéos de Brackeys de 2017, pour ceux qui cherchent une introduction rapide : How to make a CUSTOM INSPECTOR in Unity et How to make an EDITOR WINDOW in Unity.

Avatar de l’utilisateur
blix
Messages : 27
Inscription : 15 Nov 2015 17:30

Re: apparence Prefab dans Scene

Message par blix » 16 Jan 2022 18:07

Hello :)
petit retour sur le sujet

J'ai réussi à faire ce que je voulais avec un editeur pour le chemin.
(script editor dans un dossier editor qui agit sur le script road)

C'est très très cool à manipuler :-D
voilà un petit gif de la chose
j'ai donc un mono préfab qui inclut toutes les formes du chemin (je n'ai pas tout mis sur le gif)
J'ai aussi inclus un pré-calcul des sous-points de contrôle du chemin (gizmo)

Image


Bon, par contre, mon code est un peu sauvage, j'ai l'impression qu'il y a des redondances...
Je vais nettoyer tout ça et essayer de bien comprendre la logique.

Je reviendrais poser quelques questions :roll:
blix

PS : encore merci jm pour ton aide ;-)


Pour ceux que le sujet intéresse,
j'ai aussi trouvé cette vidéo qui est pas mal du tout :

https://www.youtube.com/watch?v=RImM7XYdeAc

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: apparence Prefab dans Scene

Message par jmhoubre » 16 Jan 2022 22:41

Je peux relire ton code si tu veux.

Avatar de l’utilisateur
blix
Messages : 27
Inscription : 15 Nov 2015 17:30

Re: apparence Prefab dans Scene

Message par blix » 17 Jan 2022 01:21

Oui, merci :cote:
je vais le nettoyer un peu avant.

Répondre

Revenir vers « Unity le logiciel »