j'ai le chic pour tomber sur des trucs qui me dépassent^^
Un petit tuto d'Unity sur static, je l'essaie donc en toute confiance.
Voilà le script :
Code : Tout sélectionner
using UnityEngine;
public class Enemy : MonoBehaviour {
// Les variables static sont partagées entre toutes les instances de la classe.
public static int enemyCount = 0;
public Enemy() {
// Met à jour la variable static à la création d'un ennemi.
enemyCount += 1;
}
private void Awake() {
Debug.Log(gameObject.name + " : il y a " + enemyCount + " ennemi(s).");
}
}
Sur la scène, je mets un cube, avec ce script, et il m'affiche qu'il y a 2 ennemis. J'avoue rester sec : pourquoi 2 et pas 1 ? Quelque soit le nombre de cube avec script, j'ai le double comme résultat du Debug.Log.
Après, j'ai essayé autre chose : j'ai fait un prefab avec mon cube sans le script, et je crée des instances depuis un autre script, instances auxquelles j'ajoute le script :
Code : Tout sélectionner
void Start() {
// Création de quelques ennemis.
for (int i = 0; i < 5; i++) {
GameObject go = Instantiate(
PrefabToInstantiate,
transform.position + Vector3.forward * 1.5f * i,
Quaternion.identity);
go.AddComponent(typeof(Enemy));
go.name = "Ennemi" + i.ToString();
}
}
Mais je n'ai pas trouvé l'erreur faite lors du 1er essai. Un cube scripté mis sur la scène lance-t-il son constructeur ? J'ai du laisser passer un truc de débutant^^
Arf, je sens que je vais mal dormir...