Quand dois-je marquer GameObjects comme statique?


9

Voici la documentation Unity correspondante .

Selon les explications des pages de documentation de Unity sur les GameObjects statiques, le fait de marquer parfois les GameObjects comme statiques peut affecter les performances de manière négative (par exemple, le traitement par lots statiques entraîne une utilisation plus importante de la mémoire) .

Alors, quand dois-je exactement vouloir utiliser ces fonctionnalités?

Merci d'avance.

Notes de bas de page:
Je développe actuellement un jeu top-down 2D qui a beaucoup de Sprites et de LineRenderers, mais pas d'objets 3D (pas même un quad). Tous les GameObjects sont instanciés de manière procédurale à partir de préfabriqués préfabriqués. Les LineRenderers sont mis à jour à partir des scripts de chaque image. Et presque tous les Sprites se déplacent constamment. La majorité des Sprites partagent le même matériel. Tous les LineRenderers partagent également le même matériel.


1
PAS POUR LES ARBRES DANS LES FORÊTS. Nous avons été mordus par ce mal. Temps de construction longs, données massives à vos niveaux. Remarque: les documents à ce sujet indiquent spécifiquement que vous ne devez pas l'utiliser pour les forêts. :)
Almo

@Almo Je suis avec un garçon, je peux comprendre cette douleur
Hamza Hasan

Réponses:


6

Il n'y a pas de règle stricte sur le moment où vous devez ou non rendre statique GameObjects.

À tout le moins, ne le faites que pour des objets qui ne bougeront jamais au cours de leur vie. Mais vous devez savoir ce que cela fait pour évaluer si oui ou non vous devriez.

Il fige le maillage dans les données de la scène, vous n'avez donc pas la surcharge du GameObject pour l'élément. Cela signifie une amélioration des performances au prix de la modification des données de scène au moment de la construction et un coût de mémoire supplémentaire pour l'application finale construite.

C'est très bien dans de nombreux cas, bien que cela puisse causer des problèmes, par exemple avec les forêts. En outre, cela signifie qu'au lieu de stocker une fois les verts pour l'arbre et les copies de dessin du GPU, il doit dupliquer ces verts partout. Cela prend du temps lors de la construction et de l'espace dans l'application. Notre application est passée de 3-4 Go à 300-400 Mo lorsque nous avons rendu les arbres non statiques. Le temps de construction est passé de 3-4 heures à 1 heure.

Cela dit, tout ça! Votre jeu est en 2D, et gagnerait probablement à définir GameObjects dans les scènes sur statique, à condition que vous n'en ayez pas des tonnes.


Le fait de rendre statique un préfabriqué ne rend pas les instances statiques aussi
S. Tarık Çetin

Pas si vous les instanciez à l'exécution ... Comment peuvent-ils être "statiques"? Peut-être que je me trompe ... Je vérifierai.
Almo

2
Je viens de confirmer que si le préfabriqué est marqué comme statique, les instances instanciées le sont aussi.
S. Tarık Çetin

1

Si je dis en général, tout ce qui ne bougera jamais (pas même un pixel) dans toute la vie de l'application devrait être marqué comme statique. Habituellement, il est utile pour la cuisson des lumières, la cuisson des chemins de navmesh, etc.

Eh bien, si vous développez sans objets 3D, détendez-vous et détendez-vous. Pas besoin de vous soucier du rendu en temps réel, des ombres ou de tout autre problème. Même supprimer la seule lumière vient avec une nouvelle scène;)

Eh bien, n'importe qui peut me corriger si je me trompe à n'importe quel endroit.


3
C'est vraiment mal pour des choses comme les forêts. Il réduit les appels ... mais il cuit tous les arbres dans le maillage. Cela signifie qu'au lieu de stocker une fois les verts pour l'arbre et les copies de dessin du GPU, il doit dupliquer ces verts partout. Cela prend du temps lors de la construction et de l'espace dans l'application. Notre application est passée de 3-4 Go à 300-400 Mo lorsque nous avons rendu les arbres non statiques.
Almo

@Almo huggggeeeeee différence
Hamza Hasan

Je pense que vous devriez clarifier au début de votre réponse que vous recommandez cela uniquement parce que c'est un jeu 2d.
Almo

@Almo Merci à vous, maintenant je pense que le traitement par lots statique est une chose nuisible au toucher, comme un four dont vous ne pouvez pas être sûr qu'il soit chaud ou non. :)
S. Tarık Çetin

@Almo n'hésitez pas à modifier ce bro, si vous en avez besoin. Allez-y
Hamza Hasan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.