Techniques d'intégration multimédia, prof(s):
Voici un code complet, commenté selon les règles indiquées dans ce document et faisant aussi usage de la nomenclature correcte pour les identificateurs. Il comporte du code relativement avancé pour ce cours, mais ici votre attention devrait se situer au niveau des commentaires et de l'organisation du code plutôt que sur la logique déployée.
/*
=======================================
Auteur: Bob Binette
Automne 2021, TIM
=======================================
*/
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using UnityEngine;
/// Classe principale de gestion du
/// projet Tempete de Neige
public class GameManager : MonoBehaviour
{
// --- Champs --------------------------------------------------------------
[SerializeField] private GameObject _flocon; // Assigner le prefab dans l'inspecteur
private GameObject _groupeFlocons; // GameObject "Dossier" pour contenir tous les flocons
private const int _MAX_FLOCONS = 200; // Pas plus de 200 flocons (performances!!!)
private int _nbFlocons; // Nombre de flocons à générer (0 par défaut)
// S'exécute avant la mise à jour du premier frame
void Start()
{
_groupeFlocons = new GameObject("GroupeFlocons");
Instantiate(_groupeFlocons);
nbFlocons = 150; // bon rapport performance vs qualité de l'effet visuel
}
// Pour créer les flocons (fonction appelée par un bouton)
public void CreerFlocons()
{
CreerFlocons(nbFlocons);
}
// Instancie le nombre de prefab de flocons spécifié en paramètre
private void CreerFlocons(int nbFlocons)
{
// Ce if s'assure qu'il n'y a pas trop de flocons
if(nbFlocons > _MAX_FLOCONS)
{
nbFlocons = _MAX_FLOCONS);
}
// Création des flocons
for (int i = 0; i < nbFlocons; i++)
{
GameObject obj = (GameObject)Instantiate(_flocon);
obj.transform.parent = _groupeFlocons.transform;
// Position aléatoire pour chaque flocon
obj.transform.position = new Vector2( Rand(9), Rand(4.5) );
}
}
// Retourne un nombre float aléatoire de -nb à +nb
private float Rand(float nb)
{
return Random.Range(-nb, nb);
}
}
Les commentaires XML suivent une syntaxe spéciale incluants des balises dans les commentaires qui seront interprétées par l'éditeur de code (ex: Visual Studio) ou qui serviront à générer une documnentation de code automatiquement dans le futur.
Bien qu'il est possible d'inclure bien des instructions permettant de générer une documentation précise, on se limite souvent à n'utiliser que ce qui est nécessaire pour commenter les méthodes et les déclarations de classes.
Cela va avoir pour avantage d'afficher des précisions concernant votre propre code de façon dynamique lors du codage dans votre éditeur de code.
Remarquez que les lignes de commentaires XML débutent par trois / au lieu de deux. Certaines lignes comportent bien entendu des balises XML particulières...
Exemple de méthode avec commentaire XML:
/// <summary>
/// Fait la somme de 2 entiers
/// </summary>
/// <returns>
/// Le total (entier) des 2 entiers fournis
/// </returns>
/// <param name="nb1">Premier entier</param>
/// <param name="nb2">Second entier</param>
private int Somme(int nb1, int nb2){
int total = nb1 + nb2;
return total;
}
Ces commentaires XML seront reconnus par l'éditeur (exemple Visual Studio) et s'afficheront de façon contextuelle pendant la rédation du code:
Pour plus d'informations sur les commentaires XML en C#: Commentaires de documentation XML