Un peu de contexte:
Mon projet unity se découpe en une scène générale où je place tout ce qui est commun (notamment le player y est présent) plus les scènes plus classique que je charge en additive par dessus (on y trouve les maps, les pnj etc).
Pour me permettre les interactions entre le player et les autres objets, j'ai placé une méthode Comportement_pnj_obj() dans le script des objets qui doivent intéragir et un raycast coté player qui va appeler cette méthode quand le player interagit avec l'objet:
Code : Tout sélectionner
if (declencher_hit == true)
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, direction_ray, distance_ray, layerMask);
if (hit.collider != null)
{
// déclencher comportement objet
hit.collider.SendMessage("Comportement_pnj_obj");
}
}
Jusqu'ici tout allait bien, cela fonctionne dans la plupart des cas (en tout cas je n'avais pas de bug visible).
Seulement désormais j'ai besoin de traiter dans la méthode de comportement un tableau via une coroutine un peu complexe. Pour l'exemple j'ai créé une coroutine toute bête pour vous montrer:
Code : Tout sélectionner
public void Comportement_pnj_obj()
{
if (etat_interaction == 1)
{
// preparation appel dialogue
//alim_key_phrase = new string[] {"com 5", nom_item_1 + " x" + nombre_item_1, nom_item_2 + " x" + nombre_item_2,
// nom_item_3 + " x" + nombre_item_3, nom_item_4 + " x" + nombre_item_4, nom_item_5 + " x" + nombre_item_5 };
alim_key_phrase = new string[] { "com 5", "com 5", "com 5", "com 5", "com 5", "com 5" };
alim_question_key = new bool[] { true, false, false, false, false, false };
// appel dialogue
dialogue1 = texts.renvoie_tableau_bulle(alim_key_phrase, alim_question_key, 6);
StartCoroutine(coroutine_test(dialogue1));
Code : Tout sélectionner
private IEnumerator coroutine_test(Bulle[] test)
{
Debug.Log("là" + test[0].ligne_1);
yield return null;
Debug.Log("ici" + test[0].ligne_1);
}
làVous venez de trouver :
NullReferenceException: Object reference not set to an instance of an object
(je précise que d'après mes tests, dans les mêmes conditions, un appel à la coroutine depuis une méthode Update fonctionne)
je n'ai plus vraiment d'idée pour faire en sorte de ne pas perdre la tableau.
Merci d'avance pour votre aide.