Jeu Vidéo 2

Techniques d'intégration multimédia, prof(s):

Changer un sprite

Ce document explique comment changer le sprite d'un GameObject qui est sur la scène par programmation.

SpriteRenderer

C'est le composant SpriteRenderer qui est responsable de l'affichage du sprite d'un GameObject.

Pour modifier le sprite d'un game object il faut...

  1. Avoir une référence à ce sprite provenant de notre dossier d'assets. Le plus simple est de créer un champ exposé et d'associer dans l'inspecteur le sprite voulu (qui est dans le dossier d'assets) en le glissant sur le champ exposé dans l'inspecteur.
  2. Accéder au composant SpriteRenderer du GameObject dont ont veut modifier le sprite en utilisant GetComponent()
  3. Changer la valeur de la propriété sprite de ce SpriteRenderer du GameObject en question


Exemple 1: Si le GameObject qui doit être modifié est celui qui possède le script...

// Champs requis - placer au dessus de la méthode Start()
private SpriteRenderer _monSpriteRenderer;
[SerializeField] private Sprite _nouveauSprite; // Associez dans l'inspecteur votre asset de sprite à ce champ

// Dans Start()
_monSpriteRenderer = GetComponent<SpriteRenderer>(); 

// Pour changer le sprite du GameObject au moment voulu...
_monSpriteRenderer.sprite = _nouveauSprite;		  


Exemple 2: Si le GameObject qui doit être modifié n'est pas celui qui possède le script...

Il faut procéder de façon légèrement différente. Par exemeple, si GameManager doit modifier le sprite d'un GameObject (autre que lui-même), on pourra créer dans GameManager un champ exposé afin d'associer dans l'inspecteur de GameManager le GameObject ciblé:

// Champs requis - placer au dessus de la méthode Start()
[SerializeField] private Sprite _nouveauSprite; // Associez dans l'inspecteur votre asset de sprite à ce champ
[SerializeField] private GameObject _objetCible; // Associez dans l'inspecteur votre GameObject à ce champ

// Pour changer le sprite du GameObject au moment voulu...
_objetCible.GetComponent<SpriteRenderer>().sprite = _nouveauSprite;