Pour commencer je tiens a dire que mon niveau en programmation est très limité car je débute complètement même si j'essaye de progresser.
Voilà, c'est pas vraiment un souci technique, mais plus un souci de logique et de propreté de code.
J'ai une scène 2D avec plusieurs sprite, sur les quels j'applique
Code : Tout sélectionner
void ChangeSprite(Sprite newSprite)
{
spriteRenderer.sprite = newSprite;
}
void Start()
{
spriteRenderer = gameObject.GetComponent<SpriteRenderer>();
}
void OnMouseDown()
{
if (Input.GetMouseButtonDown(0))
{
ChangeSprite(newSprite);
}
J'ai un bouton, et je veux que il s’active quand chaque sprite a eu le newSprite.
Pour celà je dois détecter le nombre de sprites dans la scene avec un count ce que j'ai fais c'est:
Code : Tout sélectionner
if (Input.GetMouseButtonDown(0))
{
ChangeSprite(newSprite);
this.count++;
if (this.count == this.stars)
{
this.button1.SetActive(true);
}
}
Et la le problème, c'est que si je clique 3 fois sur le même sprite, ça va me compter comme si j'avais cliqué sur les autres sprites et donc le bouton s'acctive.
Moi ce que je voudrais, c'est que ça n'accepte que un clic par sprite pour que on soit obligé de cliquer sur les 3 sprites.
Voilà, si quelqu'un peut me proposer une idée plus intéressante que ce que j'ai, ça serait cool merci beaucoup pour votre temps
Voici le code complet que j'ai jusque maintenant
Code : Tout sélectionner
public SpriteRenderer spriteRenderer;
public Sprite newSprite;
public GameObject button1;
public int stars = 0;
public int count = 0;
void constructor() {
this.count = 0;
this.stars = 0;
}
void ChangeSprite(Sprite newSprite)
{
spriteRenderer.sprite = newSprite;
}
void Start()
{
spriteRenderer = gameObject.GetComponent<SpriteRenderer>();
}
private void Awake()
{
this.stars = GameObject.FindGameObjectsWithTag("star").Length;
}
// fonctionne que si l'on clic sur un gameobject avec mesh colider
void OnMouseDown()
{
// Si on clic, l'ancien sprite est changé par un nouveau
if (Input.GetMouseButtonDown(0))
{
ChangeSprite(newSprite);
this.count++;
if (this.count == this.stars)
{
this.button1.SetActive(true);
}
}
}