je visionne une série de tuto sur Youtube (Unity : Create a game series), mais elle date de 2015 et concerne Unity 5. J'ai déjà réglé quelques soucis (fonctions deprecated), mais là je bloque un peu sur l'épisode 15. Je suis en 2019.2.6f1.
Contexte : l'auteur crée un système de particules basique qui s'instancie quand l'ennemi meurt. Le système de particule est construit en prefab, dont la référence dans le script est deathEffect. Il détruit le système au bout de 2 secondes, en dur, c'est également la valeur du startLifetime dans le module principal du système. Pas de soucis, cela fonctionne :
Code : Tout sélectionner
// Code qui fonctionne.
if (_damage >= health) {
Destroy(Instantiate(deathEffect, hitPoint, Quaternion.FromToRotation(
Vector3.forward, hitDirection)), 2f);
}
Code : Tout sélectionner
// Code déclenchant un avertissement.
if (_damage >= health) {
Destroy(Instantiate(deathEffect, hitPoint, Quaternion.FromToRotation(
Vector3.forward, hitDirection)), deathEffect.startLifetime);
}
Avertissement CS0618 'ParticleSystem.startLifetime' est obsolète : 'startLifetime property is deprecated. Use main.startLifetime or main.startLifetimeMultiplier instead.'
J'ai essayé pas mal de choses, qui se finissent généralement par Erreur CS0029 Impossible de convertir implicitement le type 'UnityEngine.ParticleSystem.MinMaxCurve' en 'float', bref je cale.
Je suis assez perplexe devant ce pathétique essai, dans lequel j'arrive à affecter un float à startLifetime, mais pas à récupérer sa valeur...
Code : Tout sélectionner
var main = deathEffect.main;
main.startLifetime = 2f;
float test = main.startLifetime; // Erreur CS0029
Quelqu'un voit où je me fourvoie ?
Merci.