IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

comment arrêter ce script C# ?


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 355
    Points : 0
    Points
    0
    Par défaut comment arrêter ce script C# ?
    bonjour,

    Dans le code suivant écrit pour Unity:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    
    
    public class spawn_with_delay : MonoBehaviour {
    
    	public GameObject objet, empty;
    	public Material mater;
    	public Mesh mesh;
    	public float retard,pas_ligne,pas_colonne,pas_hauteur,position_depart,nombre_de_lignes,nombre_de_colonnes,nombre_de_hauteurs;//max;
    	int i=0;
    	int j=0;
    	int k=0;
    
    	List<GameObject> ObjectList;
    
    	void Start(){
    
    		ObjectList = new List<GameObject>();
    		ObjectList.Add(objet);   
    		InvokeRepeating("Spawn", 0, retard);
    
    	}
    	// Use this for initialization
    	void Spawn () {
    
    
    		ObjectList = new List<GameObject>();
    
    		ObjectList.Add(objet);//toujours Add avant création dynamique avec new
    
    		ObjectList[0] = new GameObject("toto");
    		ObjectList[0].transform.parent = empty.transform;        //ObjetList[0] est l'enfant de l'empty
    
    
    
    
    
    
    
    
    
    		ObjectList[0].transform.position = new Vector3(position_depart+i*pas_ligne,pas_hauteur*k,pas_colonne*j);
    		ObjectList[0].AddComponent<MeshRenderer>().material = mater;
    		ObjectList[0].AddComponent<MeshFilter>().mesh = mesh;
    
    		i++;
    		print("valeur de ième ligne: "+i);
    		print("valeur de jème colonne: "+j);
    		print("valeur de kème hauteur: "+k);
    
    		if(i>=Mathf.Floor(nombre_de_lignes-position_depart))
    		{
    
    
    			j++;
    
    			if(j>=Mathf.Floor(nombre_de_colonnes-position_depart))
    			  { k++;
    				
    				if(k>=Mathf.Floor(nombre_de_hauteurs-position_depart))
    				  {k=0;
    			        //comment stopper ce script ici?	
    				   }
    
    				i = 0;
    				j = 0;
    			 }
    
    			i = 0;
    
    
    	        }
    
    	
    	}
    
    
    
    	// Update is called once per frame
    	void Update () {
    		//for(i=0;i<max;i++)
    		//{
    
    
    
    		//}
    	}
    
    
    }
    les objets ne s'arrêtent pas de se créer.
    En utilisant des if sans passer par des boucles,je ne peux utiliser break ni continue.Alors seul un ou plusieurs return bien placés devraient arrêter le script à l'endroit où c'est marqué en gras.Mais je n'y arrive pas...

    Peut-on m'aider?


    merci de votre aide

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Bonjour,

    Perso je partirai sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CancelInvoke("Spawn");
     
    return;
    Afin de sortir proprement de la méthode et de l'arrêter. As-tu déjà testé CancelInvoke ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 355
    Points : 0
    Points
    0
    Par défaut
    non je n'ai jamais essayé CancelInvoke

    avec return;
    le script continue de tourner et de créer des objets.
    Autre solution?
    effectivement,
    fonctionne parfaitement et arrête le script.

    Pourquoi cela ne fonctionne pas avec return; ?

  4. #4
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Il faut combiner les deux, comme je l'ai écrit.

    CancelInvoke pour arrêter la répétition de la méthode, et return pour sortir de la méthode directement.

    Et bien tu n'arrêtes jamais la répétition provoquée par InvokeRepeating et même si normalement un return bien placé et des conditions bien remplies ne devraient pu créer d'objets, la méthode continue de turbiner pour rien, donc autant l'arrêter directement.

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/02/2018, 14h05
  2. Comment arrêter le déroulement d'un script?
    Par Max747 dans le forum Langage
    Réponses: 2
    Dernier message: 15/05/2015, 15h11
  3. Comment arrêter l'exécution d'un script ?
    Par [ZiP] dans le forum Général Python
    Réponses: 10
    Dernier message: 08/11/2011, 20h00
  4. comment executer un script perl svp?
    Par nico72 dans le forum Langage
    Réponses: 8
    Dernier message: 13/07/2005, 09h51
  5. [DEBUTANT]Comment executer un script sql
    Par peaceinpal dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2004, 08h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo