Utilisation des interfaces dans Unity3D

Imaginons un jeu de type FPS (First Person Shooter) où l’on peut provoquer des dégâts en tirant sur un ennemi mais aussi sur certains objets, le décors ou encore sur un véhicule, nous pourrions faire comme ceci :

Cette méthode va fonctionner mais elle contraignante, peu optimisée et assez « moche » il faut l’avouer.
Essayons de simplifier en essayant la méthode SendMessage() :

C’est plus propre mais l’appel de la méthode SendMessage() est coûteuse en ressource (et c’est dommage de l’utiliser pour une méthode aussi simple que d’envoyer une variable) et en plus on devra mettre à jour ce script autant de fois que l’on aura de classe avec la méthode Endommager().

Une des solution à ce problème serait d’utiliser une interface pour toutes les classes qui pourront être endommagées par la méthode Tirer().
Créons donc l’interface avec la méthode Endommager(), la propriété PointsDeVie et appellons la IEndommageable.

Une fois l’interface créée, nous allons l’implémentée dans la classe d’un objet qui peut être endommagé en y ajoutant la variable privée _pointsDeVie et une condition dans la méthode Endommager() qui détruira le gameobjet au moment où les points de vie arrivent à zéro.

Il ne reste plus qu’à modifier notre méthode Tirer() pour prendre en compte notre nouvelle interface.

Et voilà, pour endommager un nouvelle objet, il suffira d’ajouter et implémenter l’interface IEndommageable et il pourra être endommagé et détruit très facilement.

2 thoughts on “Utilisation des interfaces dans Unity3D

  1. source

    My partner and I stumbled over here from a different page and thought I may as well check things out.
    I like what I see so now i’m following you.

    Look forward to looking over your web page for a second time.

  2. gamefly free trial

    I do accept as true with all of the concepts you’ve offered on your post.
    They’re really convincing and will definitely work. Nonetheless, the posts
    are too quick for novices. May just you please extend
    them a little from subsequent time? Thanks for the post.

Comments are closed.