Page 1 sur 1

script avec plusieurs classes

Publié : 21 Jan 2022 21:26
par Kaloverian
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

Re: script avec plusieurs classes

Publié : 21 Jan 2022 22:13
par Max
Bonsoir,

A dérive de "move". Mais où est définis la classe "move" ?

Re: script avec plusieurs classes

Publié : 21 Jan 2022 23:08
par Kaloverian
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
{
       
}
   

Re: script avec plusieurs classes

Publié : 21 Jan 2022 23:58
par Max
alors que vient faire la classe A dans l'histoire ?

Re: script avec plusieurs classes

Publié : 22 Jan 2022 00:10
par Kaloverian
Dans 2),il n'y a pas de classe A
classe A est dans la question 1) différente de 2)

Re: script avec plusieurs classes

Publié : 22 Jan 2022 10:48
par Max
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.

Re: script avec plusieurs classes

Publié : 22 Jan 2022 15:57
par Kaloverian
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 !
    }

}


Re: script avec plusieurs classes

Publié : 22 Jan 2022 17:24
par Max
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 .

Re: script avec plusieurs classes

Publié : 22 Jan 2022 19:48
par Kaloverian
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.