[MY-AL] POO et déplacement d'objet

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
pcpunch
Messages : 23
Inscription : 22 Fév 2018 12:21

[MY-AL] POO et déplacement d'objet

Message par pcpunch » 17 Juin 2018 10:57

Bonjour je me met a la POO avec Unity, mais je ne comprend pas commet utiliser un classe dependant du MonoBehaviour et une methode public de cette classe qui me permettrais de faire avancer un cube :

Ma classe Cube

Code : Tout sélectionner

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

public class Cube :MonoBehaviour {

    private string Couleur {get ; set; }
    private int Vitesse {get;set;}


	public Cube(string c, int v)
    {
        Couleur = c;
        Vitesse = v;
    }

    public void Avance()
    {        
        transform.Translate(Vector3.forward * Vitesse);
    }
       
}
Le script sur mon cube :

Code : Tout sélectionner

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

public class CubeScript : MonoBehaviour {

    Cube monCube = new Cube("rouge", 2);

		
	void Update () {
		
        if(Input.GetKeyDown(KeyCode.UpArrow))
        {
            monCube.Avance();
        }
	}
}
Est ce seulement possible ou la POO traite uniquement les données ?
je ne trouve pas de tuto sur ce sujet (POO et unity)

Merci de m'éclairer :)

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

Re: [MY-AL] POO et déplacement d'objet

Message par Max » 17 Juin 2018 11:53

Hello,

effectivement, tout cela semble un peu confut. Déjà, tu ne peux pas instancier comme tu le fait une classe dérivant de MonoBehaviours. Au mieux, il faut passer par AddComponent().
Mais au delà de la POO, là je dirais que l'on touche plus à la compréhension des mécaniques de base lié à Unity et l'écriture de scripts associés.
Si tu souhaites faire avancer un cube, pourquoi deux scripts ? C'est vrai que séparer les tâches est souvent conseillé, mais il ne faut pas pousser ce concept à l’excès.
Donc, tu pourrais écrire simplement (avec pour base ce que tu as écris plus haut):

Code : Tout sélectionner

public class CubeScript : MonoBehaviour {

    [SerializeField]
    float vitesse = 1.0f;
    [SerializeField]
    Color color;

    // Use this for initialization
    void Start () {
        GetComponent<MeshRenderer>().material.color = color;
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            transform.Translate(Vector3.forward * vitesse);
        }
    }
}
Après au niveau de l'apprentissage, il y a deux aspects:
- bien appréhender la POO avec le C# en générale, et la je t'encourage à suivre ces tuto:
https://openclassrooms.com/courses/appr ... opper-en-c
https://openclassrooms.com/courses/prog ... jet-avec-c
- en suite, la partie spécifique à Unity, et en particulier tout ce qui touche la partie script:
https://unity3d.com/fr/learn/tutorials/s/scripting
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

pcpunch
Messages : 23
Inscription : 22 Fév 2018 12:21

Re: [MY-AL] POO et déplacement d'objet

Message par pcpunch » 17 Juin 2018 12:08

Merci pour ces infos le but est de pouvoir par exemple utiliser des classes pour effectuer des actions différentes selon les objets.

Je maîtrise assez le c# au niveau d'unity mais la POO un peu moins mais j'avance;

pcpunch
Messages : 23
Inscription : 22 Fév 2018 12:21

Re: [MY-AL] POO et déplacement d'objet

Message par pcpunch » 17 Juin 2018 12:18

Par contre ce que je comprend pas , pourquoi dans le peu de tuto video sur la POO ou de cours on nous pressente toujours une méthode style attaquer, sauter, avancer ????

Si ce n'est pas ce qu'il faut faire

Cordialement

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

Re: [MY-AL] POO et déplacement d'objet

Message par Max » 17 Juin 2018 13:21

pcpunch a écrit :
17 Juin 2018 12:18
Par contre ce que je comprend pas , pourquoi dans le peu de tuto video sur la POO ou de cours on nous pressente toujours une méthode style attaquer, sauter, avancer ????

Si ce n'est pas ce qu'il faut faire
Je n'ai jamais dit cela :-/
Il ne faut pas confondre classe et méthodes. Les termes ont leur importance. Effectivement quand tu commences à aborder des mécanismes un peu plus complexes, il est toujours mieux de séparer et hiérarchiser le code, et de le rendre le plus générique possible, facilitant une approche modulaire. Après dans chaque classe, tu auras plusieurs méthodes en charge de fonctionnalités différentes.
Mais dans le cas que tu exposes dans ton message initial par exemple, tu cherches à écrire une classe indépendante pour finalement une seule ligne de code... donc est-ce bien utile ?
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

Répondre

Revenir vers « (C#) CSharp »