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.
la source
Réponses:
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.
la source
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.
la source