script avec plusieurs classes

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 : 336
Inscription : 10 Août 2016 03:03

script avec plusieurs classes

Message par Kaloverian » 21 Jan 2022 21:26

bonjour,

1)Dans mon projet Unity,il existe un script move.cs contenant une classe MonoBehaviour
J'ai crée un scrip multi_classes.cs du genre:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class multi_classes : MonoBehaviour
 {
 }
 
 public class A : move
 {
 }

Ce script ne fonctionne dans Unity?
Pour quelle riaison?

2)Le moyen d'utliser la classe move est-il celui-ci?:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class multi_classes : MonoBehaviour
 {
    move objet;
 }
 
 
merci de votre aide

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: script avec plusieurs classes

Message par Max » 21 Jan 2022 22:13

Bonsoir,

A dérive de "move". Mais où est définis la classe "move" ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: script avec plusieurs classes

Message par Kaloverian » 21 Jan 2022 23:08

la classe move est dans le script move.cs du projet Unity:
script move.cs:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class move : MonoBehaviour
{
       
}
   

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: script avec plusieurs classes

Message par Max » 21 Jan 2022 23:58

alors que vient faire la classe A dans l'histoire ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: script avec plusieurs classes

Message par Kaloverian » 22 Jan 2022 00:10

Dans 2),il n'y a pas de classe A
classe A est dans la question 1) différente de 2)

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: script avec plusieurs classes

Message par Max » 22 Jan 2022 10:48

Kaloverian a écrit :
21 Jan 2022 21:26
Ce script ne fonctionne dans Unity?
donc pour répondre oui, sur le principe, ce code est fonctionnel (si move existe).
Tu définis deux classes, une 'MonoBehaviour' et la seconde 'A' (dérivant de 'move').

PS: à noter que par convention, on essais de faire en sorte que le nom des classes débutent par une majuscule.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: script avec plusieurs classes

Message par Kaloverian » 22 Jan 2022 15:57

3)Il y a quelque chose que je ne comprends pas:
Ma classe D est présente dans un autre script classeD.cs du projet comme ceci:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class classeD : MonoBehaviour
{ 
  public  int d=0;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

Le script suivant devrait afficher dans la console le contenu de la variable publique de classeD.Or ça ne s'affiche pas.Pourquoi?

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class classeA : MonoBehaviour
{  
   
    // Start is called before the first frame update
    void Start()
    {
      
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}


public class classeB : classeD
{ 
  //1ère manière en créant un objet de type classeD
    classeB objet1; 

    // Start is called before the first frame update
    void Start()
    {
      Debug.Log(objet1.d); //rien ne s'affiche dans la console !
       
     //2ème manière en créant un objet dynamiquement
      classeD objet2 =new classeD();
      Debug.Log(objet2.d);//rien ne s'affiche dans la console !
       
     //3ème manière:comme classeB hérite de classeD ,j'appelle directement la variable publique de classeD
     Debug.Log(d);//rien ne s'affiche dans la console !
    }

}

Dernière édition par Kaloverian le 22 Jan 2022 18:45, édité 3 fois.

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: script avec plusieurs classes

Message par Max » 22 Jan 2022 17:24

en fait tu places dans un même script deux classes dérivant de MonoBehaviour.
C'est dans ce cas ClasseA qui sera considéré comme component et non ClasseD (le fichier devant s’appeler ClasseA.cs) , donc il est normal que la methode Start() de ClasseD ne soit pas exécutée.
Pourquoi placer ces deux classes dans le même scripts si elles sont destinées à être traitées comme component ?
Un script destiné à être component doit être une classe dérivée de MonoBehaviour, et dans un fichier dont le nom est celui de la classe.
Si tu veux que la ClasseB soit considérée comme Component, alors il faut la placer dans un fichier qui lui est spécifique et nommé ClasseB.cs .
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: script avec plusieurs classes

Message par Kaloverian » 22 Jan 2022 19:48

Effectivement,j'avais une certaine confusion entre classe dérivée et création d'un objet de classe difféente.
Ces 2 notions peuvent etre indépendantes.

Répondre

Revenir vers « (C#) CSharp »