Page 1 sur 1

[Résolu] [DB] souci avec startLifetime

Publié : 01 Nov 2019 22:45
par jmhoubre
Bonsoir,
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);
}
Un peu plus tard, il décide de ne plus mettre en dur la valeur, si on décide de changer la valeur du startLifetime. Le code devient :

Code : Tout sélectionner

// Code déclenchant un avertissement.
if (_damage >= health) {
            Destroy(Instantiate(deathEffect, hitPoint, Quaternion.FromToRotation(
            	Vector3.forward, hitDirection)), deathEffect.startLifetime);
}
Cela fonctionne encore, mais j'obtiens l'avertissement suivant :
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
La lecture de la documentation m'a procuré une agréable moment de lecture, sans plus.
Quelqu'un voit où je me fourvoie ?

Merci.

Re: [DB] souci avec startLifetime

Publié : 01 Nov 2019 22:58
par jmhoubre
Je ne dois pas être le premier qui se répond, mais si vite... :gene2:
J'ai parcouru les commentaires (j'avais oublié), et un sympathique candidat a donné la réponse :

Code : Tout sélectionner

Destroy(Instantiate(deathEffect, _hitPoint, Quaternion.FromToRotation(
	Vector3.forward, _hitDirection)), deathEffect.main.startLifetime.constant);