Je me permet d'ouvrir un sujet car après de nombreuse recherches je ne trouve pas de solution a mon problème .
Je m'explique :
Je débute sur unity et en C# je cherche a faire un système de gestion des points de vie simple, pour le moment rien de visuel (pas de jauge ect ) que du code,
Ce que je cherche a faire n'est certainement pas la meilleurs méthode mais c'est surtout pour me faire la main.
Voila mon script :
gameManager:
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class gameManager : MonoBehaviour
{
public static gameManager instance;
public List<int> lifePointList = new List<int>();
public int lifePointJaune= 150;
public int lifePointRouge= 200;
public int lifePoint;
public int dmg = 50;
public void Awake()
{
if (instance != null)
{
Debug.LogWarning("Il y a plus d'une inscance de GameManager dans la scene");
return;
}
instance = this;
}
public void Start()
{
lifePointList.Add(lifePointJaune);
lifePointList.Add(lifePointRouge);
}
public void cliqueAttaque()
{
lifePoint -= dmg;
Debug.Log("attaque");
}
}
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class jaune : MonoBehaviour
{
public int lifePoint;
public void Start()
{
lifePoint = gameManager.instance.lifePointList[0];
}
public void Update()
{
if (lifePoint <= 0)
{
Destroy(this);
}
}
void OnMouseDown()
{
gameManager.instance.cliqueAttaque();
}
}
c'est a dire qu'elle soit définit seulement dans le deuxième script "jaune",
en gros je voudrai crée une fonction que je pourrait réutiliser dans tout les scripts de mes ennemis (1 scripts par ennemis) et que la valeur lifePoint de cliqueAttaque soit celle du script sur laquelle elle est appliqué ,
donc pas de GetComponent<jaune>.lifePoint par exemple puisque je ne veux pas définir dans la fonction cliqueAttaque de quelle lifePoint il est question.
Je ne sais pas si ma question est claire si vous avez une solution ou un moyen d'optimiser je prend aussi.
merci d'avance.