Noticias

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

Consulta

Iniciado por PmL_Unity, Febrero 28, 2018, 09:15:16 PM

Tema anterior - Siguiente tema
Febrero 28, 2018, 09:15:16 PM Ultima modificación: Marzo 01, 2018, 01:48:18 PM por pioj
Buenas!. Quiero consultarles a la comunidad si alguien hizo o tiene idea de como seria la lógica de lo siguiente:
Tengo hecho un inventario de selección de objetos, lo que quiero hacer y no me sale es que cuando el Inventario 1 este lleno, que los objetos que recoja se pase al inventario 2 y que del inventario 2 pueda hacer un drag and drop con el inventario 1.
¿No se si me explico? ¿alguien me podria dar alguna orientación de cómo seria la logica para esto
 
P/D El inventario 1 es el principal y de donde puedo seleccionar y usar los objetos, el inventario 2 vendría hacer una especie de caja donde me guarda los ítems que no puedo recoger del inventario 1 por estar lleno y por ende se guardan aquí, pero si los quiero usar los tengo que pasar al inventario 1, y esa mecánica no me sale.

Como se está con el drag and drop ultimamente en foro ...
 
La parte de que recoja objetos y se vayan llenando, podés hacer la lógica muy simple, algo así (está todo muy por arriba )
 

//-------------------------------------------------------------------------------
//Tu manager de inventarios ?? o cualquier parte del código que decida cuando y donde guardar los items
//-------------------------------------------------------------------------------
 
void GuardarItem(Item item)   //este es el item que recogiste
{

if(inventario1.permitido)
{
   inventario1.GuardarItem(item);
}else if(inventario2.permitido)
{
   inventario2.GuardarItem(item);
}else{
   //No hay más espacio
}
}
//-------------------------------------------------------------------------------
// Inventario ---------------------------------------------------------------------
//-------------------------------------------------------------------------------
 
List<Item> listaElementos = new List<Item>();
int maximoPermitido = 10;   
public bool permitido{ get{ return listaElementos.Count < maximoPermitido } }
 
public void GuardarItem(Item item){
listaElementos.Add(item);
}
 

 
La parte del drag and drop se divide en dos:
 
1 - hacer el drag and drop, debe haber miles de tutoriales por ahí, si estás en UGUI podés usar los eventos dragenter dragexit (creo, ya ni me acuerdo) y en cada uno interpretar las posiciones o detectar los slots del inventario, en base a eso realizar una funcionalidad (punto siguiente), imprimí siempre el lugar donde "dropeas", la pos del mouse, y lo que se te ocurra. Aprendé de anc***dPosition y rectTransform en general, va a ser vital en esto.
 
 
 
2- Funcionalidad, olvidate por ahora del drag and drop, dentro del mismo manager de inventario ejemplo de arriba podés hacer algo bien sencillo (a modo de prueba):
 

//fijate que puse int, solo para dar una idea, sería la pos en la lista de elementos
public int slotA;   
public int slotB;
public void HacerElCambio()
{
//Aca va la lógica del intercambio
}

 
Y desde cualquier lado disparar esto (con la "E", por qué no?):
 

if( input --> "E")
HacerIntercambio():

 
LA idea es probar toda combinación de Slot A y B, de un Inv a otro, al mismo, a un objeto ya existente, a un lugar inexistente, etc... fijate que los iconos (si tenés) deben comportarse correctamente, todo en orden. Una vez que la parte funcional ande sabés que el proceso del punto 1 culmina en llamar a esta función (pero pasandole los Slots correspondientes).
 
Saludos
 
 

Cita de: lightbug date=1519857687Como se está con el drag and drop ultimamente en foro ...
   
   
      La parte de que recoja objetos y se vayan llenando, podés hacer la lógica muy simple, algo así (está todo muy por arriba )
   
   

//-------------------------------------------------------------------------------
//Tu manager de inventarios ?? o cualquier parte del código que decida cuando y donde guardar los items
//-------------------------------------------------------------------------------
 
void GuardarItem(Item item)   //este es el item que recogiste
{

if(inventario1.permitido)
{
   inventario1.GuardarItem(item);
}else if(inventario2.permitido)
{
   inventario2.GuardarItem(item);
}else{
   //No hay más espacio
}
}
//-------------------------------------------------------------------------------
// Inventario ---------------------------------------------------------------------
//-------------------------------------------------------------------------------
 
List<Item> listaElementos = new List<Item>();
int maximoPermitido = 10;   
public bool permitido{ get{ return listaElementos.Count < maximoPermitido } }
 
public void GuardarItem(Item item){
listaElementos.Add(item);
}
 

   
      La parte del drag and drop se divide en dos:
   
   
      1 - hacer el drag and drop, debe haber miles de tutoriales por ahí, si estás en UGUI podés usar los eventos dragenter dragexit (creo, ya ni me acuerdo) y en cada uno interpretar las posiciones o detectar los slots del inventario, en base a eso realizar una funcionalidad (punto siguiente), imprimí siempre el lugar donde "dropeas", la pos del mouse, y lo que se te ocurra. Aprendé de anc***dPosition y rectTransform en general, va a ser vital en esto.
   
   
       
   
   
      2- Funcionalidad, olvidate por ahora del drag and drop, dentro del mismo manager de inventario ejemplo de arriba podés hacer algo bien sencillo (a modo de prueba):
   
   

//fijate que puse int, solo para dar una idea, sería la pos en la lista de elementos
public int slotA;   
public int slotB;
public void HacerElCambio()
{
//Aca va la lógica del intercambio
}

   
      Y desde cualquier lado disparar esto (con la "E", por qué no?):
   
   

if( input --> "E")
HacerIntercambio():

   
      LA idea es probar toda combinación de Slot A y B, de un Inv a otro, al mismo, a un objeto ya existente, a un lugar inexistente, etc... fijate que los iconos (si tenés) deben comportarse correctamente, todo en orden. Una vez que la parte funcional ande sabés que el proceso del punto 1 culmina en llamar a esta función (pero pasandole los Slots correspondientes).
   
   
      Saludos
   
   
       
   


Muchas gracias, eres un genio! lo voy a porbar y cualquier cosa comento que tal me fue, Muchas gracias.

Etiquetas: