[RESOLU] [MY - AL] Problème de récupération de valeurs dans un Prefab

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
ludo2vie
Messages : 15
Inscription : 15 Juin 2021 05:43

[RESOLU] [MY - AL] Problème de récupération de valeurs dans un Prefab

Message par ludo2vie » 05 Sep 2021 10:57

Bonjour à tous.

J'explique mon souci ...

J'ai une scène, avec un script qui me donne des valeurs jour ou nuit.
Dans cette scene, je fais apparaitre de façon aléatoire des véhicules. Ces derniers sont des prefab.
Mon problème, est que je ne sais pas comment donner l'info au préfab de la valeur lié à ma scène.
Pour être plus précis, dans mon prefab, j'ai créé un script, qui suivant la valeur jour ou nuit de la scène, allume les phares.
Quand je suis sur le prefab, je n'ai pas le moyen d'attribuer le script "jour / nuit" présent dans la scène.

J'espère avoir expliqué correctement le souci.
Merci de vos retours ;)
Dernière édition par ludo2vie le 05 Sep 2021 12:43, édité 2 fois.

ludo2vie
Messages : 15
Inscription : 15 Juin 2021 05:43

Re: [MY - AL] Problème de récupération de valeurs dans un Prefab

Message par ludo2vie » 05 Sep 2021 12:42

Hello,
Pour info, j'ai réussi par le biais du Tag.
J'ai attribué un Tag "TimeDayNight" au gameobject de ma scène, et j'ai pu attribué la valeur "hour" (celle qui m'intéresse pour passer de jour à nuit) dans mon Prefab.
Je mets le script humblement, il peut servir à un débutant comme moi ;)

Code : Tout sélectionner

public class PhareRecupTime : MonoBehaviour
{
    public GameObject phare;
    GameObject daynightcycl;

    public int fixhour;


    void Start()
    {

        daynightcycl = GameObject.FindWithTag("TimeDayNight");
        fixhour = daynightcycl.GetComponent<DayNightCycle>().hour;

    }

    // Update is called once per frame
    void Update()
    {
        fixhour = daynightcycl.GetComponent<DayNightCycle>().hour;


        //
        if (fixhour < 7)
        {
            phare.SetActive(true);
        }
        if (fixhour > 17)
        {
            phare.SetActive(true);
        }
        if (fixhour >= 7 && fixhour <= 17)
        {
            phare.SetActive(false);
        }
        //

    }
}

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [MY - AL] Problème de récupération de valeurs dans un Prefab

Message par Max » 05 Sep 2021 14:28

Bonjour,

merci pur cette auto-réponse :mrgreen:

par contre, par rapport à ton script, évite les GetComponent() dans l'Update, c'est assez lourd comme fonction, et même si sur une application simple tu ne t'en rends pas compte, cela pompe des ressources qui ne se justifie pas.
Placer le component DayNightCycle en cache est une solution plus appropriée. Par exemple, tu peux écrire quelque chose comme:

Code : Tout sélectionner

public class PhareRecupTime : MonoBehaviour
{
...
    private DayNightCycle cycle;
...
    void Start()
    {
    ...
      cycle = daynightcycl.GetComponent<DayNightCycle>();
    ...
    }
    
    // Update is called once per frame
    void Update()
    {
        fixhour = cycle.hour;    
      ...
      }
Image
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

Répondre

Revenir vers « Scripting »