Aller au contenu principal

Prefabs et instanciation

Les deux vous donnent beaucoup d'une même chose. Ils résolvent des problèmes complètement différents, et choisir le mauvais est une source courante soit de corvée, soit de scènes lentes.

PrefabInstanciation
Copieun arbre d'objetsla géométrie d'un objet
Chaque copieentièrement indépendante, modifiableseulement dessinée, non modifiable
Bon pourune chaise utilisée dans douze piècesdix mille brins d'herbe
Modifier une fois, mettre à jour partoutouisans objet — c'est le même objet

Prefabs

Un prefab est un arbre d'objets enregistré que vous pouvez déposer encore et encore dans vos scènes : une lampe avec sa lumière et sa lueur, une porte avec son cadre et son son, un personnage entièrement rigué.

Modifiez le prefab et chacune de ses instances se met à jour. C'est tout l'intérêt : vous réparez la poignée de porte une fois, pas dans douze pièces.

Chaque instance fait vraiment partie de votre scène : vous pouvez la déplacer, et modifier dessus ce qui est propre à l'endroit où elle se trouve.

Faites-en un prefab à la deuxième copie, pas à la cinquième

Dès que vous vous surprenez à copier un petit groupe d'objets pour la deuxième fois, faites-en un prefab. En créer un après coup, avec douze copies éparpillées, veut dire réconcilier douze jeux de petites différences.

Instanciation

L'instanciation dessine la géométrie d'un objet de nombreuses fois en un seul appel. Mille copies coûtent à peu près ce que coûte une seule, et c'est ce qui rend possibles les champs d'herbe, les foules, les ceintures d'astéroïdes et les forêts.

Trois façons de disposer les copies :

SourceLes dispose
gridsur un réseau régulier, avec un décalage optionnel pour casser la régularité
scatterlibrement dans une boîte ou une sphère
childrenune copie par objet enfant, à la position de chacun

La source children est l'option « rends ça rapide » : placez les choses à la main là où vous les voulez, puis activez-la et elles s'effondrent en un seul dessin. Les enfants cessent de se dessiner eux-mêmes tant qu'elle est active.

Rendre les copies différentes

Les copies ont la même géométrie : sans aide elles se ressemblent toutes et se lisent comme du papier peint. Trois réglages cassent cela :

RéglageEffet
scaleMin · scaleMaxchaque copie prend une taille aléatoire entre les deux
rotationJitterchaque copie reçoit une rotation aléatoire
colorA · colorBchaque copie prend une teinte entre les deux

Pour aller plus loin, un graphe de matériau peut lire quelle copie est en train d'être dessinée et faire varier ce que vous voulez à partir de là — ondoyer avec une phase différente, une usure différente, un motif différent.

La disposition est générée, jamais stockée

Un nombre, une forme et un seed produisent la même disposition partout — dans l'éditeur, sur un téléphone, pour chaque participant d'une salle multijoueur. Rien n'est synchronisé, donc dix mille copies ne coûtent rien sur le réseau.

Changez le seed pour une autre disposition à partir des mêmes réglages.

maxCount est un garde-fou : les copies au-delà ne sont pas dessinées, donc un chiffre de trop ne peut pas tenter d'allouer une quantité de mémoire impossible.


Suite : Chargement et écran de lancement