Nouvelles fonctionnalités et mises à jour destinées aux programmeurs
Nouveautés
Voici un aperçu de nos principales mises à jour des outils destinés aux programmeurs. Pour en savoir plus, consultez les notes de version.
Écrivez moins de code standard avec les nouvelles versions de nos packages DOTS. Remplacez les composants de création personnalisés par un simple attribut [GenerateAuthoringComponent], puis remplacez les constructions verbeuses IJobForEach et IJobForEachWithEntity avec Entities.ForEach(), plus simple mais tout aussi rapide, qui utilise maintenant le compilateur Burst et le système de tâches C#.
Le nouvel attribut SerializeReference vous permet de sérialiser les classes C# comme références plutôt que comme types de valeurs. Cela signifie que vous pouvez avoir des POCO (anciens objets C# simples) se référençant les uns les autres, simplifiant ainsi le code pour exprimer et gérer des structures de données complexes telles que les graphes et les arbres.
L'attribut offre également une prise en charge des données polymorphes dans les champs. Par exemple, une liste de type List<IAnimal> peut contenir des chiens (classe Dog : IAnimal{}) et les chats (classe Cat : IAnimal{}).
Les champs marqués pour sérialisation comme références peuvent maintenant exprimer des valeurs Null intrinsèquement. Auparavant, la sérialisation d'un champ Null le désérialisait toujours à l'aide du constructeur par défaut de ce type.
La sérialisation de types non-Unity ignorait traditionnellement le polymorphisme. Dans Unity 2019.3, la sérialisation polymorphe vous permet de conserver des références d'objet qui ne survivaient pas auparavant au processus de sérialisation, et de référencer plus correctement la chaîne d'héritage.
Actuellement, lorsque vous entrez en mode lecture dans l'Éditeur, Unity effectue deux actions : il réinitialise les états de programmation des scripts (rechargement de domaine) et recharge la scène. Cela prend du temps, et lorsque votre projet se complexifie, l'éditeur Unity peut être lent à entrer en mode lecture. C'est pourquoi nous introduisons le mode d'entrée en lecture configurable (expérimental) dans les options Paramètres du projet > Éditeur > Mode d'entrée en lecture.
Ces options vous permettent de désactiver le rechargement de domaine et/ou de scène à partir du processus d'entrée en mode lecture quand il n'existe aucun changement de code. D'après les résultats de nos tests, la modification de ces paramètres peut vous permettre d'économiser 50 à 90 % de temps d'itération, selon le projet.
Consultez la rubrique How to configure Play Mode de la documentation pour plus de détails sur la façon de modifier vos scripts correctement une fois désactivé le rechargement de domaine.
Cette fonctionnalité est actuellement expérimentale et nous sommes impatients de lire votre avis sur le forum.
Nous avons effectué une mise à niveau de la bibliothèque PhysX (v3.4 vers v4.1). Celle-ci inclut le nouveau solutionneur Temporal Gauss-Seidel, qui permet aux jointures d'être plus résistantes aux étirements excessifs et empêche certains comportements erratiques précédemment observés lors des simulations. Pour activer le nouveau solveur, allez dans Paramètres du projet > Physique.
Nous avons également introduit le nouvel algorithme large phase Automatic Box Pruning, capable de calculer automatiquement les limites d'un monde et le nombre de subdivisions. Il s'agit d'une mise à niveau de l'algorithme Multi-Box Pruning.
De plus, un algorithme de maillage moyenne phase plus rapide est disponible sur les plateformes de bureau. Il n’est pas nécessaire de créer des structures d’accélération gourmandes en ressources (R-Trees), ce qui est utile pour le contenu généré à l’exécution, car le temps d’instanciation du MeshCollider sera réduit.
Nous avons également ajouté une API pour permettre un précalcul retardé des maillages pour le MeshCollider. Vous pouvez masquer le processus de précalcul des maillages, très intenses informatiquement, derrière un écran de chargement ou des scènes de transition, comme une scène de dialogue dans un jeu d'aventure. Cette API étant sécurisée pour les threads, vous pouvez appeler la fonction depuis le thread principal, y compris via le système de tâches C#, pour précalculer plusieurs maillages en même temps.
Avant 2019.3, lorsque vous examiniez les performances via la fenêtre Profiler, vous pouviez afficher les données de profil de 300 images à la fois. Cela ne vous laissait pas toujours le temps de capturer les images qui vous intéressaient vraiment.
Un nombre d'images configurable vous permet d'étendre cette fenêtre de capture. Dans la fenêtre Preferences, vous pouvez maintenant configurer le nombre d’images (300-2000) que vous souhaitez afficher dans la fenêtre Profiler.
Le suivi et l’analyse des allocations gérées est une fonctionnalité importante du Profiler Unity.
Les allocations gérées en continu provoque le déclenchement de la récupération de mémoire (ou Garbage Collection, GC) et perturbe le bon déroulement de l'expérience de jeu avec un retard de plusieurs images. Savoir quand les allocations ont lieu et connaître leur origine dans le code est essentiel pour développer des jeux avec Unity.
Dans la versions 2019.3, vous introduisons des piles d'exécution pour les allocations gérées dans les lecteurs. Cela vous permet de savoir de quelle fonction C# provient une allocation de GC lors du profilage des lecteurs.
Vous pouvez activer cette option avec l'interrupteur à bascule Call Stacks.
Unity 2019.3 inclut également une refonte de notre prise en charge du contrôle de version.
Cela inclut un certain nombre d'améliorations de l'expérience utilisateur et de l'intégration, ainsi que des correctifs pour notre intégration Perforce, tels que la tentative de reconnexion automatique en cas de perte d'une connexion Perforce.
Une barre Version Control est désormais disponible en haut de la fenêtre Inspector, vous permettant d'effectuer des opérations supplémentaires tels que l'ajout, le verrouillage, le déverrouillage et la soumission, entre autres améliorations.
En outre, dans l'Inspector pour les ressources non extraites, vous pouvez maintenant cliquer avec le bouton droit de la souris pour copier les valeurs des champs Inspector désactivés.
Consultez les notes de version pour plus de détails sur l'ensemble des correctifs et améliorations de l'IU.
Cette version inclut le nouveau système de ressources adressables (Addressables), qui vous permet de charger facilement des ressources par « adresse », tout en gérant le temps système nécessaire à la gestion des ressources en simplifiant la création et le déploiement de packs de contenu. Pour résumé, Addressables permet à votre équipe de gérer facilement du contenu complexe en direct.
FPS Netcode, utilisé dans le projet DOTS Sample, s'appuie sur la DOTS et facilite la création de jeux en réseau avec une architecture similaire. Il inclut la prédiction côté client, le serveur faisant autorité, l’interpolation et la compensation de décalage.
Écoutez Tim Johansson présenter le FPS NetCode à Unite Copenhagen 2019.
Accédez à toutes les fonctionnalités ci-dessus et bien plus dès aujourd'hui.