Jump to content
UnitySpain
Sign in to follow this  
WiTiJi

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

Recommended Posts

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?

Share this post


Link to post
Share on other sites

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.

Edited by OldGuy

Share this post


Link to post
Share on other sites
20 minutes ago, OldGuy said:

no 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.

Share this post


Link to post
Share on other sites
2 hours ago, WiTiJi said:

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.

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í.

Share this post


Link to post
Share on other sites
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.

Captura.png

Edited by WiTiJi

Share this post


Link to post
Share on other sites
2 hours ago, OldGuy said:

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í.

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

Share this post


Link to post
Share on other sites
On 1/31/2019 at 5:47 PM, WiTiJi said:

Creo que escribí mal el array

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

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...