[RÉSOLU] [DB-AL] Modifier la variable d'un script instancié en jeu à l'aide d'un autre script.
Publié : 29 Mars 2021 19:04
Bonjour, j'ai lu différents sujets à propos de la modification de la variable d'un script via un autre script mais je pense que mon problème est un peu différent donc je me suis permis d'en créer un nouveau (navré si je me suis trompé).
Alors voila, mon but final est d'arroser une petite parcelle de terre à l'aide d'un arrosoir.
le problème, c'est que cette parcelle est crée directement en jeu (via une pelle) et on peut en créer autant que l'on veut.
je bloque donc sur la modification d'une variable boolean (qui change la texture de la terre lorsqu'elle passe à true et inversement)
j'utilise donc deux script, un sur l'arrosoir et l'autre sur ma parcelle de terre (donc chacun sur un gameObject différent).
donc, au début je pensais simplement faire :
(je n'affiche que du Boolean parce que les autres fonctions fonctionnent parfaitement lorsque j'active se boolean manuellement)
et dans l'autre script
(ici encore je n'affiche que ce qui semble poser problème, dites moi si vous souhaitez en voir plus du script en question) j'active cette fonction via un event ajouté sur l'animation de mon objet)
du coups, le debug.log m'annonce qu'il détecte bien le collider de la parcelle, mais m'annonce ensuite qu'il manque une référence et me renvoi à la ligne "test.water = true;"
je me suis donc dit que c'est parce qu'il s'agit d'un objet instancié et qu'il fallait que je renseigne autre chose?
ps :j'ai également tenter avec la variante
Mais je pense que ça revient au même. et que le problème ne vient pas de là? je me dis donc qu'il faut utiliser une autre méthode ou que je référencie mal mon script?
Navré encore si la réponse vous semble simple, je ne suis pas vraiment expérimenté ^^'.
Alors voila, mon but final est d'arroser une petite parcelle de terre à l'aide d'un arrosoir.
le problème, c'est que cette parcelle est crée directement en jeu (via une pelle) et on peut en créer autant que l'on veut.
je bloque donc sur la modification d'une variable boolean (qui change la texture de la terre lorsqu'elle passe à true et inversement)
j'utilise donc deux script, un sur l'arrosoir et l'autre sur ma parcelle de terre (donc chacun sur un gameObject différent).
donc, au début je pensais simplement faire :
Code : Tout sélectionner
public class PlanteControler : MonoBehaviour
{
public bool water = false;
}
et dans l'autre script
Code : Tout sélectionner
public class ArmAnimations : MonoBehaviour
{
public PlanteControler test;
public void Event_Arroser()
{
RaycastHit hit = Inventory.instance.player.fpsCamera.RaycastHit();
if (hit.collider && hit.collider.sharedMaterial
&& (hit.collider.GetComponent<Interact>()
&& hit.collider.GetComponent<Interact>().canHitObject))
{
Debug.Log("il y a un collider");
test.water = true;
}
else
{
Debug.Log("il n'y a pas de collider");
}
}
du coups, le debug.log m'annonce qu'il détecte bien le collider de la parcelle, mais m'annonce ensuite qu'il manque une référence et me renvoi à la ligne "test.water = true;"
je me suis donc dit que c'est parce qu'il s'agit d'un objet instancié et qu'il fallait que je renseigne autre chose?
ps :j'ai également tenter avec la variante
Code : Tout sélectionner
private PlanteControler test;
private void Start()
{
test = GetComponent<PlanteControler>();
}
Navré encore si la réponse vous semble simple, je ne suis pas vraiment expérimenté ^^'.