[DB]code à corriger

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

[DB]code à corriger

Message par Kaloverian » 04 Avr 2019 23:13

bonjour,

J'ai écrit ce code en C# dans le but de faire apparaître les objets crées.

Pouvez-vous me corriger ces 2 lignes?(cf commentaire du code:to correct thes 2 lines please)

Code : Tout sélectionner

using UnityEngine;

using System.Collections;

using System.Collections.Generic;

public class create_objects_bis : MonoBehaviour {

public float moveSpeed = 2f;

// Create a private variable that can store a handle to the object we created.
List<Transform> allCreations = new List<Transform>();

List<MeshRenderer> allRenders = new List<MeshRenderer>();

void Update ()
{
    if (Input.GetKeyDown (KeyCode.Q))
    {
        // When we create an object, add its transform to our list.
        var createdGameObject = new GameObject ("Object" + allCreations.Count);

        allCreations.Add (createdGameObject.transform);

        //to correct these 2 lines please

        var createdMeshRenderer = new MeshRenderer ("Render" + allRenders.Count);
        allRenders.Add (createdMeshRenderer.transform);
    }

    // Iterate over all created transforms and move them.
    foreach (var creation in allCreations) {
        if (creation != null)
            creation.Translate (new Vector3 (1, 0, 1) * Time.deltaTime * moveSpeed);
    }

    foreach ( var render in allRenders ) {
        if (render!= null) 
            render.GetComponent<MeshRenderer> ().enabled = true;


    }
}
}


thanks

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

Re: [DB]code à corriger

Message par Max » 05 Avr 2019 07:55

Bonjour,

new MeshRenderer, ça tu ne peux pas. Tu ne peux pas créer d'instance de classe d'un components.
(d'ailleurs dans les messages d'erreur, tu dois avoir un truc du genre MeshRenderer ne possède pas de constructeur...)
Les components doivent être associés à un GameObject, et pour cela il faut passer par les fonctions de l'API,
en particulier par AddComponent.
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

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB]code à corriger

Message par Moi 1971 » 05 Avr 2019 08:22

Bonjour,
de plus, le mot réservé "var" n'existe pas en C#.

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

Re: [DB]code à corriger

Message par Max » 05 Avr 2019 13:02

Var permet des déclarations implicites en C#, donc ici ce n'est pas ce qui devrait poser problème ;)
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: [DB]code à corriger

Message par Kaloverian » 05 Avr 2019 18:58

oui mais il me semble que https://docs.unity3d.com/ScriptReferenc ... onent.html ne permet d'ajouter un component à un objet crée précédemment dans un script.

Je ne connais pas la manière de faire ceci

Peut-on m'aider?

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

Re: [DB]code à corriger

Message par Max » 05 Avr 2019 19:05

Kaloverian a écrit :
05 Avr 2019 18:58
oui mais il me semble que https://docs.unity3d.com/ScriptReferenc ... onent.html ne permet d'ajouter un component à un objet crée précédemment dans un script.
Oui, c'est ce que je disais dans ma réponse. Quand à la méthode, le lien vers la doc donne des exemples, ce qui devrait bien t'aider.
Dans ton code plus haut, tu créés des gameobjects, donc en suite pour chaque gameobject créés tu passes par des AddComponent en fonction de ce que tu veux leur ajouter comme components.
Après je ne te suis pas trop sur ton approche. Quelle est la raison qui fait que tu ne pars pas sur des instanciations de préfabs ? Vu d'ici cela semble plus simple que de tout te taper par script.
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

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB]code à corriger

Message par Moi 1971 » 05 Avr 2019 19:56

Max a écrit :
05 Avr 2019 13:02
Var permet des déclarations implicites en C#, donc ici ce n'est pas ce qui devrait poser problème ;)
Oui effectivement, une erreur de ma part.

Répondre

Revenir vers « (C#) CSharp »