Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Temas recientes

¿Por qué no puedo cambiar los valores a un array?

Iniciado por WiTiJi, Enero 31, 2019, 12:26:32 PM

Tema anterior - Siguiente tema
Enero 31, 2019, 12:26:32 PM Ultima modificación: Enero 31, 2019, 03:35:18 PM por Bamf
Hola. Estaba probando una función para mover un objeto por waypoints y con una velocidad diferente cada vez que pasa de uno a otro. Puse un array de Vector3 y otro tipo float pero me he dado cuenta de que no puedo cambiar el valor de ningún array, sólo al definirla. No. Ni eso. Por que si esta es pública en inspector me sale que no tiene nada, de size 0.
 
Además del Update() he probado con Start() y Awake(), y también poniendo el array así:
 

float [] numeros = new float [] {};
float [] numeros = new float [4]
float [] numeros = new float [4] {1.5, 3f, 2, 0.3f, 21};
float [] numeros;

 
Da igual cómo lo ponga que cuando escribo "numeros[0] = 3f;" me dice "IndexOutOfRangeException: Array index is out of range". ¿Por qué pasa esto?

Enero 31, 2019, 12:31:02 PM #1 Ultima modificación: Enero 31, 2019, 12:32:01 PM por OldGuy
Hola,
 
no estás inicializando bien el array:
 

float[] numeros = new float[] { 1.5f, 3f, 2f, 0.3f, 21f };
Debug.Log(numeros[0]);
numeros[0] = 3.0f;
Debug.Log(numeros[0]);

 
 
 
Muestra 1.5 y 3 en consola.

Cita de: OldGuy date=1548934262no estás inicializando bien el array:
   


Se me ha olvidado poner ese también. Que tampoco me funciona.
 
Ahora he probado hacerlo en un nuevo proyecto y ahí si que no da error. Será cosa de mi proyecto que hay un bug o algo.

Cita de: WiTiJi date=1548935683Ahora he probado hacerlo en un nuevo proyecto y ahí si que no da error. Será cosa de mi proyecto que hay un bug o algo.
   


Tal como lo he puesto funciona en cualquier proyecto. No entiendo lo de proyecto con bug, si te compila todo los scripts correctamente, eso funciona sí o sí.

Enero 31, 2019, 04:53:35 PM #4 Ultima modificación: Enero 31, 2019, 05:08:39 PM por WiTiJi

public Vector3 [] targetPosition = new Vector3 [] {Vector3.zero, Vector3.zero, Vector3.zero, Vector3.zero};


case Moves.Test:
control.targetPosition[0] = Vector3.forward * 3;
control.targetPosition[1] = Vector3.forward * 3 + Vector3.up * 3;
control.targetPosition[2] = Vector3.forward * 3;
break;

 
Lo he probado en otra clase. Otro script. Y sí funciona, pero en este no. Está en un switch, dentro una función llamada "SetTargetPosition" que está dentro de otra llamada "SwitchMovements" dentro de Update. Lo que hace es esperar a que pulse un boton, para que haga "SetTargetPosition" y cambie a otro case de "SwitchMovements". Pero vamos, ni si quiera ocurre esto porque me da ese error.
 

Cita de: OldGuy date=1548944671Tal como lo he puesto funciona en cualquier proyecto. No entiendo lo de proyecto con bug, si te compila todo los scripts correctamente, eso funciona sí o sí.
   


Ya lo he solucionado. Creo que escribí mal el array y después con los demás le daba a guardar pero en el inspector no le daba a Reset y se quedaba igual. 
 
. . .
 
Gracias igualmente xD

Cita de: WiTiJi date=1548953260Creo que escribí mal el array
   


No falla, como siempre la culpa es del autor, no del programa XDDD

Etiquetas: