comment convertir type void ,struct en booléen ?
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
- Kaloverian
- Messages : 345
- Inscription : 10 Août 2016 03:03
Re: comment convertir type void ,struct en booléen ?
désolé je ne comprends pas
De quel test parle-t-on?
De quel test parle-t-on?
Re: comment convertir type void ,struct en booléen ?
Code : Tout sélectionner
if(LeaveTrail(first_objet.transform.position, echellePrefab, prefabMat))
Donc la question est: à quoi sert-il ?
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
- Kaloverian
- Messages : 345
- Inscription : 10 Août 2016 03:03
Re: comment convertir type void ,struct en booléen ?
on teste si la fonction LeaveTrail est appelée !
J'aurai pu aussi tester cet appel comme ceci:
avec :
Ah oui !!
alors
ne prouve pas que LeaveTrail a été appelée?
A mon avis,si
J'aurai pu aussi tester cet appel comme ceci:
Code : Tout sélectionner
bool LeaveTrail(Vector3 point, float scale, Material material)
{
GameObject go = GameObject.Instantiate (prefab, transform);
go.transform.localScale = Vector3.one * scale;
go.transform.position = point;
go.transform.rotation=prefab.transform.rotation;
go.GetComponent<Renderer>().material = material;
Destroy(go, delay);
return false;
}
Code : Tout sélectionner
if( ! LeaveTrail(first_objet.transform.position, echellePrefab, prefabMat))
Code : Tout sélectionner
bool LeaveTrail(Vector3 point, float scale, Material material)
{
GameObject go = GameObject.Instantiate (prefab, transform);
go.transform.localScale = Vector3.one * scale;
go.transform.position = point;
go.transform.rotation=prefab.transform.rotation;
go.GetComponent<Renderer>().material = material;
Destroy(go, delay);
return true;
}
Code : Tout sélectionner
if( LeaveTrail(first_objet.transform.position, echellePrefab, prefabMat))
A mon avis,si
Dernière édition par Kaloverian le 15 Jan 2022 17:20, édité 1 fois.
Re: comment convertir type void ,struct en booléen ?
heu non, tu testes simplement si elle renvoie true ou false, mais elle sera toujours appelée. Pas besoin d'un If pour cela.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
- Kaloverian
- Messages : 345
- Inscription : 10 Août 2016 03:03
Re: comment convertir type void ,struct en booléen ?
Comment alors tester si LeaveTrail a été appelée?
Re: comment convertir type void ,struct en booléen ?
Pourquoi souhaites-tu tester si ta fonction est appelée ? Quel est le but ? Cela aidera à comprendre.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
- Kaloverian
- Messages : 345
- Inscription : 10 Août 2016 03:03
Re: comment convertir type void ,struct en booléen ?
La fonction LeaveTrail appelée instancie un prefab.
A chaque instanciation ou à chaque appel de la fonction LeaveTrail,je souhaite ajouter ce prefab dans une liste de GameObject.Ce nouvel élément dans la liste est numéroté et donc je peux intervenir précisément sur le prefab crée(il s'en crée des dizaines à la seconde environ)
Effectivement,il vaut mieux placer dans le corps de la fonction(et non dans la condition if) la liste et le nouveau prefab à rajouter dans la liste.
De cette façon, l'appel à lui seul de la fonction LeaveTrail crée un nouveau prefab dans la liste:pas besoin de faire:
si la fonction LeaveTrail est appelée
script résolu:
A chaque instanciation ou à chaque appel de la fonction LeaveTrail,je souhaite ajouter ce prefab dans une liste de GameObject.Ce nouvel élément dans la liste est numéroté et donc je peux intervenir précisément sur le prefab crée(il s'en crée des dizaines à la seconde environ)
Effectivement,il vaut mieux placer dans le corps de la fonction(et non dans la condition if) la liste et le nouveau prefab à rajouter dans la liste.
De cette façon, l'appel à lui seul de la fonction LeaveTrail crée un nouveau prefab dans la liste:pas besoin de faire:
si la fonction LeaveTrail est appelée
script résolu:
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class trail_renderer_volumetric_with_list : MonoBehaviour
{
public GameObject first_objet,prefab;
public Material prefabMat;
public float echellePrefab,delay;
List<GameObject> prefabList;
int i=0;
// Start is called before the first frame update
void Start()
{
prefabList=new List<GameObject>();
}
// Update is called once per frame
void Update()
{
LeaveTrail(first_objet.transform.position, echellePrefab, prefabMat);
}
private void LeaveTrail(Vector3 point, float scale, Material material)
{
GameObject go = GameObject.Instantiate (prefab, transform);
go.transform.localScale = Vector3.one * scale;
go.transform.position = point;
go.transform.rotation=prefab.transform.rotation;
go.GetComponent<Renderer>().material = material;
Destroy(go, delay);
prefabList.Add(prefab);
prefabList[i] = new GameObject("prefab" + i);
print("nombre d'éléments de la liste de prefabs :"+prefabList.Count);
i++;
}
}