Conversion script Unity V4 vers V5

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
Balk0r
Messages : 9
Inscription : 24 Mars 2017 06:17

Conversion script Unity V4 vers V5

Message par Balk0r » 24 Mars 2017 06:30

Bonjour a vous, je suis nouveau a utilisé Unity(5.5) et en voulant apprendre je me suis retrouvé face a un problème de "script c#".
Je vous explique, j'ai lancé un tutoriel pour commencé a apprendre un petit peu le fonctionnement de Unity que voici -vous êtes directement placé a la page ou je bloque-

http://pixelnest.io/tutorials/creer-un- ... s-ennemis/

Arrivé a "déplacement joueur" dans le tuto, je bloque sur la mise en place du script, j'ai pourtant bien copié collé le script dans CSharp mais impossible de lancé le "mode jeu" ou déplacé tout simplement le script sur mon joueur, un message d'erreur alors apparaît me disant que il y a des erreurs a corriger mais je trouve pas d'ou cela viens, une version trop récente de mon unity ? une ligne de code mal placé ? aidez moi s'il vous plait je veux apprendre ! :'(

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

Re: Débutant, je ne comprend pas tout

Message par boubouk50 » 24 Mars 2017 10:44

Bonjour Balk0r,

Dans l'onglet Console, tu as des messages d'erreur qui s'affichent. Ils te disent quelles lignes de quels scripts sont incriminées. Copie-colle les ici si tu veux qu'on t'aide à les corriger.

+
"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

Balk0r
Messages : 9
Inscription : 24 Mars 2017 06:17

Re: Débutant, je ne comprend pas tout

Message par Balk0r » 24 Mars 2017 11:00

Voici le "code" mit sur le tuto:

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
 
public class movetest : MonoBehaviour {
 
        public Vector2 speed = new Vector2(50, 50);
 
        private Vector2 movement;
       
        void Update()
        {
                float inputX = Input.GetAxis("Horizontal");
                float inputY = Input.GetAxis("Vertical");
 
                movement = new Vector2(
                        speed.x * inputX,
                        speed.y * inputY);
               
        }
       
        void FixedUpdate()
        {
                rigidbody2D.velocity = movement;
        }
}
Première erreur : Severity Code Description Project File Line Suppression State
Error CS0619 'Component.rigidbody2D' is obsolete: 'Property rigidbody2D has been deprecated. Use GetComponent<Rigidbody2D>() instead. (UnityUpgradable)' Assembly-CSharp C:\Users\Pierre\Desktop\Création jeux\New Unity Project\Assets\Script\Playerscript.cs

deuxieme erreur : Severity Code Description Project File Line Suppression State
Error CS1061 'Component' does not contain a definition for 'velocity' and no extension method 'velocity' accepting a first argument of type 'Component' could be found (are you missing a using directive or an assembly reference?) Assembly-CSharp C:\Users\Pierre\Desktop\Création jeux\New Unity Project\Assets\Script\Playerscript.cs


Un problème avec velocity surement car c'est la seule ligne qui veux pas
 ! Message de : boubouk50
Encadre ton code dans les balises prévues à cet effet stp. 5e bouton.

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

Re: Débutant, je ne comprend pas tout

Message par boubouk50 » 24 Mars 2017 11:15

Voilà comment cela fonctionne:
Error CS0619 'Component.rigidbody2D' is obsolete: 'Property rigidbody2D has been deprecated. Use GetComponent<Rigidbody2D>() instead (UnityUpgradable)' Assembly-CSharp C:\Users\Pierre\Desktop\Création jeux\New Unity Project\Assets\Script\Playerscript.cs
Unity te dit clairement que rigidbody2D n'existe plus tel quel. Il faut utiliser GetComponent<Rigidbody2D>() à la place.
Donc dans ton code tu remplaces rigidbody2D par GetComponent<Rigidbody2D>().

La seconde erreur découle de la première puisque velocity est une variable de rigidbody2D, sauf que comme rigidbody2D n'a pas été correctement récupéré, tu essaies d'accéder à une variable sur une classe nulle. Elle se corrigera donc toute seule lorsque rigidBody2D sera correctement récupéré, donc en corrigeant la première erreur.

Aussi, faire un GetComponent () est lourd, il vaut mieux stocker le rigidbody2D dans une variable:

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
 
public class movetest : MonoBehaviour {
 
        public Vector2 speed = new Vector2(50, 50);
        
        private Rigidbody2D rigidbody2D;
        private Vector2 movement;
       
       void Start () {
       		//ré&cupération du component Rigidbody2D
       		rigidbody2D = GetComponent<Rigidbody2D>();
       }
       
        void Update()
        {
                float inputX = Input.GetAxis("Horizontal");
                float inputY = Input.GetAxis("Vertical");
 
                movement = new Vector2(
                        speed.x * inputX,
                        speed.y * inputY);
        }
       
        void FixedUpdate()
        {
       		 //Affectation du Rigidbody2D
                rigidbody2D.velocity = movement;
        }
}
"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

Balk0r
Messages : 9
Inscription : 24 Mars 2017 06:17

Re: Conversion script Unity V4 vers V5

Message par Balk0r » 24 Mars 2017 11:38

De nette amélioration ( je peux toujours pas le lancé en "jeu" mon personne ne bouge pas) mais j'ai encore une erreur :
Severity Code Description Project File Line Suppression State
Warning CS0108 'movetest.rigidbody2D' hides inherited member 'Component.rigidbody2D'. Use the new keyword if hiding was intended. Assembly-CSharp C:\Users\Pierre\Desktop\Création jeux\New Unity Project\Assets\Script\Playerscript.cs 9 Active


Merci beaucoup de ton aide en tout cas, j'apprend la programmation au moment ou on se parle mais le tuto était pour les débutants et les scripts sont déjà écris donc il y aurait du pas avoir de problème ahah

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

Re: Conversion script Unity V4 vers V5

Message par boubouk50 » 24 Mars 2017 12:03

Alors les textes en jaune sont des avertissements (Warning). Ils te donnent une information sur des lignes de code qui pourraient donner un comportement suspect, une variable jamais utilisée, etc. Ils n'empêchent pas le jeu de se lancer. Si tu as toujours le message:
all compiler errors have to be fixed, alors une autre erreur (en rouge) n'est pas corrigée.
"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

Balk0r
Messages : 9
Inscription : 24 Mars 2017 06:17

Re: Conversion script Unity V4 vers V5

Message par Balk0r » 24 Mars 2017 12:07

Ah d'accord, sauf qu'au final mon personnage ne bouge toujours pas.. j'ai pourtant mit le code sur mon "personnage"

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

Re: Conversion script Unity V4 vers V5

Message par boubouk50 » 24 Mars 2017 12:15

Essaie ce code:

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
 
public class movetest : MonoBehaviour {
 
        public Vector2 speed = new Vector2(50, 50);
        
        private Rigidbody2D rigidbody2D;
        private Vector2 movement;
       
       void Start () {
             //ré&cupération du component Rigidbody2D
             rigidbody2D = GetComponent <Rigidbody2D> ();
       }
       
        void Update()
        {
                float inputX = Input.GetAxis("Horizontal");
                float inputY = Input.GetAxis("Vertical");
 
                movement = new Vector2(
                        speed.x * inputX,
                        speed.y * inputY);
                        
                        Debug.Log ("mouvement: " + movement);
        }
       
        void FixedUpdate()
        {
              //Affectation du Rigidbody2D
                rigidbody2D.velocity = movement;
                
                Debug.Log ("vélocité: " + rigidbody2D.velocity);
        }
}
Et dis moi lorsque tu joues si des erreurs surviennent (en rouge) et ce que te met en console les Debugs (en blanc) lorsque tu appuies sur les touches directionnelles. (Tu devrais avoir mouvement: 50 et vélocité: 50)

Le code doit être mis sur le gameObject qui possède le Rigidbody2D
"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

Balk0r
Messages : 9
Inscription : 24 Mars 2017 06:17

Re: Conversion script Unity V4 vers V5

Message par Balk0r » 24 Mars 2017 12:26

Re !

Alors aucune erreur rouge mais le personnage ne bouge toujours pas et aucune trace du velocity non plus..
Pourtant j'ai bien mon script dans mon gameobject, il y a toujours une erreur jaune :

Severity Code Description Project File Line Suppression State
Warning CS0108 'movetest.rigidbody2D' hides inherited member 'Component.rigidbody2D'. Use the new keyword if hiding was intended. Assembly-CSharp C:\Users\Pierre\Desktop\Création jeux\New Unity Project\Assets\Script\Playerscript.cs 9 Active


Je savais que ça serait pas facile mais a se point ! Merci encore de prendre le temps pour m'aider ^^

EDIT: Un message d'erreur dans la console:
The referenced script on this Behaviour (GameObject 'player') is missing

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

Re: Conversion script Unity V4 vers V5

Message par boubouk50 » 24 Mars 2017 12:44

Sur ton gameObject Player, il y a un script manquant, vérifie.
"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 »