Noticias

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

Inventario Sistema

Iniciado por RankDown, Octubre 04, 2017, 09:32:40 PM

Tema anterior - Siguiente tema
Buenas, chic@s.
 
 
 
Estoy haciendo un sistema de inventarío, pero estoy atascado en esta zona, lo que sucede es que cuando pulso la tecla "E" no ejecuta el "if", si no, que pasa directamente al "else", y no se que cambiar de esa linea, espero que con esta parte del código sea suficiente.
 


             
 

  if (Input.GetKeyUp(KeyCode.E))
                {
                    float index1 = Random.Range( ,slots.Length );
                    int index = Mathf.RoundToInt(index1);
                    print(index);
                    slotBusqueda = GameObject.FindGameObjectWithTag("Slot").GetComponent<InvSlotsInfo>();
 
                        if (slotBusqueda.oNumero == Hit.transform.gameObject.GetComponent<invobjectinfo>().numero)
                        {
                            slotBusqueda.cantidad = slotBusqueda.cantidad + Hit.transform.gameObject.GetComponent<invobjectinfo>().cantidad;
                            Destroy(Hit.transform.gameObject);
                        }
                        else
                        {
                            slots[index].oNumero = Hit.transform.gameObject.GetComponent<invobjectinfo>().numero;
                            slots[index].cantidad = slots[index].cantidad + Hit.transform.gameObject.GetComponent<invobjectinfo>().cantidad;
                            Destroy(Hit.transform.gameObject);
                        }
 
                }

 
 
 
 
 
Espero que me puedan ayudar, un saludo.

Y ese GeyKeyUP? (deberia ser down si queres que pase cuando se presione) , segun eso que tenes se mete en el primer if cuando soltas la letra E, es decir apretas...no pasa nada....la soltas y se mete.
 
fijate que los FindGameObjectWithTag y los find en general son lentisimos, nunca los uses en update usalos antes, ya tenelos referenciados.

A ver ... aunque se salga de tema tengo que decirlo xD te mereces un premio por tener una re***cion de -1 en el foro de UnitySpain, eres la primera persona que veo con el dudoso honor (no digo que tengas porque ser la unica, pero nunca lo habia visto). Ni yo he conseguido eso, y mira que me he llevado rapapolvos y he discutido en este foro ... lo tuyo se podria catalogar de hazaña epica
 
Confieso que cuando he visto ese prodigioso rango, la curiosidad me ha podido por lo que a continuacion he visitado tu perfil y me he puesto a leer tus intervenciones/aportaciones en el foro por si podia aprender algo nuevo ... la verdad es que no me ha llevado mas de 3 minutos (9 posts en 3 años, no se puede decir que destaques por tu gran actividad).
 
Pero tengo que confesar que lo que mas me ha llamado la atencion ha sido el hecho de que modificaras hoy mismo (05/10/2017) un post de hace 3 años (03/12/2014) para borrar el contenido ... lo que me provoca mucha curiosidad por saber lo que ponia xDDD
 
Dicho todo eso, como te ha apuntado @lightbug, si quieres que algo suceda en el momento de presionar una tecla tienes que decirle que ocurra con el evento Down (abajo) en lugar de Up (arriba). Yo aconsejaria aprender algo de ingles, no hace falta un nivel pro pero si lo mas basico como minimo ... si os motiva, pensar que estas cosas como el Down y Up son lo que enseñan en la asignatura de ingles a niños de 3º - 4º de primaria por lo que si un niño que tiene 9-10 añitos es capaz a aprenderlo, tu tambien podras.
 
Tambien hay que decir, como muy bien te ha comentado el mencionado compañero (aunque el haya sido mucho mas delicado), eso es una mierda de codigo desde el punto de vista del rendimiento. Un bloque de codigo, que encima se ejecutara en el Update, de tan solo 10 lineas que contine FindGame + 5 GetComponent no tiene calificacion posible.

Cita de: Arthure date=1507178496te mereces un premio por tener una re***cion de -1 en el foro de UnitySpain
   


 miraaa no me di cuenta jajaj como es que terminas con -1? pioj te da los negativos?
 
 

-1 ?
 
es increible!
 
como se quitan puntos? conducias borracho? jeje
 
sobre "Hit... ...GetComponent" repetidas veces:
 
podrias almacenarlo en una varible(la he llamado "itemInfo"), justo despues de la linea slotBusqueda = GameObject.FinGameObjectsWhitTag, para no tener que buscar el componente tantas veces, ....igual que haces con "slotBusqueda"
 
invobjectinfo itemInfo = 
 
Hit.transform.gameObject.GetComponent<invobjectinfo>();
 
y luego solo comparar "slotBusqueda" con "itemInfo"
 
 
 
sobre que no se ejecuta bien lo de la tecla "E"....
 
es lo que dice @lightbug:
 
GetKeyDown = true: justo cuando pulsas la tecla
 
GeyKey = true: mientras mantengas pulsada esa tecla
 
GetKeyUp = true: justo cuando sueltas la tecla

Etiquetas: