Re: pourquoi Unity plante avec ce script C#?
Publié : 24 Avr 2019 16:53
Si,je peux faire:
code1
mais pas
code2:
car objet a été déclaré en local
Ni faire:
code3
Dans code2,c'est normal que ça ne fonctionne pas objet1.transform.Rotate (0,30, 0, Space.Self); sort de la 1er boucle dans laquelle il a été crée:objet1 n'existe pas dans le contexte local
Dans code3,objet1.transform.Rotate (0,30, 0, Space.Self) ne sort pas de 1ère boucle for puisque la 2ème boucle est contenue dans la 1ère donc cas similaire du code1
Alors ce que je ne comprends pas,c'est que puisque code1 fonctionne pourquoi code3 ne fonctionne pas?
code1
Code : Tout sélectionner
void Update () {
if (Input.GetKeyDown (KeyCode.T)) {
for (i =1;i<=10; i++) {
var objeti = new GameObject ("objet" + i);
print ("création" + i);
objet1.transform.Rotate (0,30, 0, Space.Self);}}}
mais pas
code2:
Code : Tout sélectionner
void Update () {
if (Input.GetKeyDown (KeyCode.T)) {
for (i =1;i<=10; i++) {
var objeti = new GameObject ("objet" + i);
print ("création" + i);}
objet1.transform.Rotate (0,30, 0, Space.Self);}}
Ni faire:
code3
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class deux_boucles_simples : MonoBehaviour {
static int i,j;
// Use this for initialization
void Start () {
var objet0 = new GameObject ("objet" + 0);
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown (KeyCode.T)) {
for (i =1;i<=10; i++) {
var objeti = new GameObject ("objet" + i);
print ("création" + i);
for (j=10;j>=5; j--) {
Destroy (objetj);
print ("destruction" + j);
}
}
print ("-------------------------");
}
}
}
Dans code3,objet1.transform.Rotate (0,30, 0, Space.Self) ne sort pas de 1ère boucle for puisque la 2ème boucle est contenue dans la 1ère donc cas similaire du code1
Alors ce que je ne comprends pas,c'est que puisque code1 fonctionne pourquoi code3 ne fonctionne pas?