Depuis quelques jours, j'essaye de créer un jeu 2D sur Unity (plateforme/combat).
Pour utiliser divers bonus sur le temps (invincibilité, boost de puissance, pouvoirs etc...), j'utilise des timers. J'ai donc créé une classe Timer qui s'occupe de tout ça.
Dans cette classe, j'utilise le constructeur Timer suivant :
Code : Tout sélectionner
public Timer(float t) /* t>=0 */
{
timeF = t;
timeOut = (t==0);
timerActive = false;
}
Voici donc mon problème : l'utilisation de "new" dans mon code Joueur (qui utilise la classe Timer) est refusée.
Voici la ligne en question :
public Timer timerBoost = new Timer(dureeBoost);
Qui affiche sur ma console :
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
J'ai regardé de nombreux forums et j'ai trouvé certaines solutions mais aucune ne correspond à ma situation :
Je ne peux pas enlever l'héritage à MonoBehaviour de ma classe Joueur.
Je ne peux pas non plus utiliser :
public Timer timerInvincible = gameObject.AddComponent<Timer>();
déjà parce que ça ne reconnaît pas gameObject mais aussi parce que ça marcherait pour un constructeur sans arguments, mais je dois placer dureeBoost en argument du constructeur Timer.
Voilà voilà, je ne sais pas si j'ai été très clair malgré mon très long post ^^' mais si vous pouviez répondre à ma question, ça serait vraiment très gentil de votre part