Noticias

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

numero (size) de GameObject[]

Iniciado por Abramelin, Junio 03, 2016, 10:11:12 PM

Tema anterior - Siguiente tema
Junio 03, 2016, 10:11:12 PM Ultima modificación: Junio 03, 2016, 10:16:48 PM por Abramelin
¿como puedo hacer un check del numero (size) de GameObjects[] que comparten tag? tengo esto, pero evidentemente está mal porque 'objetos' no es un 'int'.
 
 
 

public var objetos : GameObject[];
function Update(){
objetos = GameObject.FindGameObjectsWithTag("letras");
if (objetos == 5){ //aqui da el error por no estar puesto como int
objetos.SetActive(false);
}
}

 
con objetos.size no da error pero tampoco desactiva los objetos

Junio 03, 2016, 10:16:40 PM #1 Ultima modificación: Junio 03, 2016, 10:16:50 PM por leocub58
if(objetos.Length == 5)
 
 
 
Cita de: Abramelin date=1464984672

public var objetos : GameObject[];
function Update(){
objetos = GameObject.FindGameObjectsWithTag("letras");
if (objetos == 5){ //aqui da el error por no estar puesto como int
objetos.SetActive(false);
}
}

   
      ¿como puedo hacer un check del numero (size) de GameObjects[] que comparten tag? tengo esto, pero evidentemente está mal porque 'objetos' no es un 'int'.
   
   
       
   
   
       
   


me tira un error: Property 'System.Array.Length' is read only.
 
tendre que poner algo mas?

Cita de: Abramelin date=1464985190me tira un error: Property 'System.Array.Length' is read only.
   
   
      tendre que poner algo mas?
   


algo mal estás haciendo, porque lo estás leyendo y el error dice que la propiedad Length es solo legible.



public var objetos : GameObject[];
function Update(){
objetos = GameObject.FindGameObjectsWithTag("letras");
if (objetos.Length == 5){
objetos.Length = 0;
}
}

 
asi ha quedado, pero tira ese error

Y en el update, por si el error no sale suficientes veces. Qué intentas hacer?

es un puzzle de un teclado que solo permite poner 5 letras. al pulsar 5 teclas (las que sean) los objetos con el tag 'letras' (que son las letras que aparecen en pantalla) se desactivan y el 'size' tendria que volver a 0 (como una especie de reset). pero el chequeo tiene que estar realizandose en todo momento, asi que supongo que tendra que estar en update a la fuerza, no se me ocurre otra forma.

Junio 03, 2016, 11:03:42 PM #7 Ultima modificación: Junio 03, 2016, 11:04:06 PM por iRobb
Como te han comentado, el size es el tamaño del array. Eso no se puede cambiar a menos que cambies el contenido del array.
 
Luego, comprobarlo en cada frame sin filtrar cuando pulsen una tecla no va a resultar muy práctico. Ponlo en el update (o el fixedupdate) pero comprueba que se pulse una tecla antes.

Junio 03, 2016, 11:41:58 PM #8 Ultima modificación: Junio 04, 2016, 06:13:35 PM por Abramelin
para pulsar las teclas tengo otro codigo en cada tecla que activa su letra correspondiente.
 

var obj1 : GameObject;
function OnTriggerStay (other:Collider){   
if (other.gameObject.tag == "puntero"){   
if(Input.GetButtonDown("accion")){

obj1.SetActive(true);
}
}
}

 
No es un teclado al uso, este quizas sea hasta mas simple que otros que tengo hechos, en este no importa el orden de las letras. Es una especie de sistema de sigiles/sellos en el que hay que adivinar las letras que los componen, este sería de 5 letras.
 
El unico problema es que no se como "contar" los GameObject[], probare con una variable publica int y cada ve que se active una letra, que sume en el script principal esa variable... la forma bestia seria comprobar cada una de las letras, en caso de no poder simplificarlo tendré que hacerlo asi.
 
 
 
 
 

 

 
 
 
*solucionado, ya lo he podido arreglar sin recurrir a la forma bestia

Etiquetas: