Unity 2019.3

Nouvelles fonctionnalités et mises à jour destinées aux programmeurs

Découvrez les nouveautés de Unity 2019.3 destinées aux développeurs, telles que les mises à jour majeures de la DOTS, les améliorations apportées au contrôle de version et à la sérialisation, les options d'entrée en mode lecture configurables, les mises à jour de la physique, et bien plus encore.

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.

Mise à jour DOTS Game Code

É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#.

Pour commencer à écrire le code DOTS de la nouvelle façon, installez le package d'aperçu Entities depuis Package Manager.

DOTS_game_code_update.cs (C#)
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using Unity.Jobs;
using Unity.Sample.Core;
using Unity.Transforms;
using UnityEngine;
[GenerateAuthoringComponent]
struct Velocity : IComponentData
{
	public float value;
}
class ApplyVelocitySystem : JobComponentSystem
{
	protected override JobHandle OnUpdate(JobHandle inputDeps)
	{
		float deltaTime = Time.deltaTime;
		return Entities.ForEach((ref Translation translation, in Velocity velocity) =>
		{
			translation.Value += velocity.Value * deltaTime;
		}).Schedule(inputDeps);
	}
}
En savoir plus

Améliorations de la sérialisation

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 (class Chien : IAnimal{}) et des chats (class Chat : 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.

Serialization_improvements.cs (C#)
using System;
using System.Collections.Generic;
using UnityEngine;

public interface IShape {}
[Serializable]
public class Cube : IShape
{
    public Vector3 size;
}
[ExecuteInEditMode]
public class BuildingBlocks : MonoBehaviour
{
    [SerializeReference]
    public List<IShape> inventory;
   void OnEnable()
    {
        if (inventory == null)
        {
            inventory = new List<IShape>()
            {
                new Cube() {size = new Vector3(1.0f, 1.0f, 1.0f)}
            };
            Debug.Log("Created list");
        }
        else
            Debug.Log("Read list");
    }
}
En savoir plus

Itérations plus rapides grâce à l'entrée en mode lecture configurable

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. Nous proposons donc des options d'entrée en mode lecture configurables, accessibles via Project Settings > Editor > Enter Play Mode Options (Experimental)

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.

Vous pouvez aussi accéder à cette fonctionnalité via une API et un rappel si vous souhaitez réinitialiser l'état du jeu avant d'entrer en mode lecture.

Cette fonctionnalité est actuellement expérimentale et nous sommes impatients de lire votre avis sur le forum.

En savoir plus

Mise à niveau de la bibliothèque PhysX (v3.4 vers v4.1)

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 solutionneur, accédez à Project Settings > Physics

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. 

Pour plus d'informations, consultez la section « Migrating from PhysX SDK 3.4 to 4.0 » du guide PhysX 4.1 SDK NVIDIA.

En savoir plus

Amélioration du Profiler : nombre d'images configurable

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.

En savoir plus

Amélioration du profiler : prise en charge Deep Profile dans les lecteurs

Avec cette mise à jour, vous pouvez activer la prise en charge Deep Profiling pour tous les lecteurs dans la fenêtre Build ou avec l'API BuildPlayer.

Lorsque vous créez un lecteur avec la prise en charge Deep Profiling, vous pouvez enregistrer les horodatage à l'entrée et à la sortie des méthodes C#. Cependant, cette instrumentation C# pouvant entraîner une surcharge de performances, nous avons ajouté la possibilité de la désactiver par lecteur.

En savoir plus

Amélioration du profiler : prise en charge des piles d'exécution d'allocations dans les lecteurs

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.

En savoir plus

Améliorations du contrôle des versions

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.

Consulter les notes de version

Addressables

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.

En savoir plus

NetCode

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 FPS Netcode à l'Unite Copenhagen 2019.

En savoir plus

Télécharger Unity 2019.3

Accédez à toutes les fonctionnalités ci-dessus et bien plus dès aujourd'hui.

Ce site utilise des cookies dans le but de vous offrir la meilleure expérience possible. Consultez notre politique de cookies pour en savoir plus.

Compris