syntaxe à comprendre

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Kaloverian
Messages : 343
Inscription : 10 Août 2016 03:03

syntaxe à comprendre

Message par Kaloverian » 17 Nov 2021 02:58

bonjour,

Voici un extrait d'un script C# d'un projet Unity:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
File holds bullet base class and all 5 bullet classes. 
there is code duplication but idea is that we can have very different entities easily
 */
public class Bullet : MovableObject
{
    protected string bulletType;
    protected float life=1.5f;
    protected float elapsedTime=0;
    protected BoxCollider2D boxCollider2D;

    protected float speed;
    /*
    Main bullet class has all common code
     */
    public Bullet(GameObject gameObject, Vector2 initialPosition) : base(gameObject, initialPosition){
        gameObject.layer = LayerMask.NameToLayer("enemybullet");
        bulletType=gameObject.name;
        boxCollider2D=gameObject.GetComponent<BoxCollider2D>();
		boxCollider2D.size= new Vector2(2,2);
        spriteRenderer.sortingLayerName="enemybullet";
    }
Que représente :

Code : Tout sélectionner

   public Bullet(GameObject gameObject, Vector2 initialPosition) : base(gameObject, initialPosition){
        gameObject.layer = LayerMask.NameToLayer("enemybullet");
        bulletType=gameObject.name;
        boxCollider2D=gameObject.GetComponent<BoxCollider2D>();
		boxCollider2D.size= new Vector2(2,2);
        spriteRenderer.sortingLayerName="enemybullet";
    }
-ça ne peut pas être une fonction car il n'y a pas de type devant
-est-ce un constructeur?
-autre?quoi?

merci de votre aide

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: syntaxe à comprendre

Message par boubouk50 » 17 Nov 2021 07:46

C'est un constructeur.
Tu le reconnais par sa dénomination qui est identique à la classe.

Code : Tout sélectionner

: base(gameObject, initialPosition)
représente l'appel au constructeur de la classe mère MovableObject

Pour plus d'information:
https://docs.microsoft.com/en-us/dotnet ... nstructors
https://www.c-sharpcorner.com/article/c ... n-C-Sharp/
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »