Jump to content
UnitySpain

Search the Community

Showing results for tags 'rpc'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Inicio
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
  • Mesa de ayuda
    • Unity
    • Arte
    • Otras Especialidades
    • Builds & Dispositivos
  • Aportes de la Comunidad
    • Recursos
    • Eventos
    • Buenas Prácticas
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 1 result

  1. Buenas a todos. Hace ya unas semanitas que estoy aprendiendo uNet, pero me surge una duda con objectos se se puede droppear (soltar en el mapa) y pickup (se pueden recoger del suelo por cualquier usuario). Ahora mismo lo tengo funcionando bien, un player se encuentra un item, lo recoge y lo añade a su inventario, luego lo suelta y aparece en el mapa, otro player ve ese objeto y lo puede recoger. La cosa es que no se si lo tengo bien estructurado en cuanto a Commands y ClientRPCs, pongo un ejemplo inventado y en bruto para que veais como lo tengo: "Al hacer click en un item, ejecuta la funcion de "Añadir Item al inventario" y la esctructura de la funciona es la siguiente:" .... .... if (isItem == true) { CmdAddItem(); } [Command] void CmdAddItem() { //añadir item a una lista //modificar el nombre a item.name //modificar parent del item //añadir item a un Slot //indicarle al item en que slot esta //...y mas logica RpcAddItemInform(); } [ClientRPC] void RpcAddItemInform() { if(isLocalPlayer) { //añadir item a una lista //modificar el nombre a item.name //modificar parent del item //añadir item a un Slot //indicarle al item en que slot esta //...y mas logica } if(!isLocalPlayer) { //modificar el nombre a item.name //modificar parent del item //indicarle al item en que slot esta //...y mas logica } } Este código es muy bruto es solo para ejemplificar lo que me esta ocurriendo con todo lo que tengo que sincronizar entre servidor y clientes. Como veis, tanto lo que ejecuto en el Command como en el RPC para el LocalPlayer, como en el RPC para el NoLocalPlayer, se repiten las lineas de la lógica, con variantes ya que cada cliente tiene que saber lo que que tiene que saber, pero encuentro absurdo tanto repetir código. Primero en el Command le doy toda la logica ya que es el server y lo tiene que saber todo o casi todo, luego ejecuto el RPC para actualizar los clientes pero con variantes según si es el playerlocal o no es el local. Parece una tontería pero al tener ya varios Command y RPCs en el código veo muchas lineas de Lógica repetidas y tampoco acabo de ver el sentido a actualizar la información del Item en el servidor si luego al informar a los clientes les paso el mismo código a mano, al ejecutar el RPC no debería "Copiar" lo que hay en el server? En mi opinión estoy haciendo algo mal en terminos de organizacion de donde ejecutar las lineas de logica, donde ejecutar las lineas de comprobación previas a la lógica (como por ejemplo saber si tengo un Slot libre en el inventario antes de añadir el item). He buscado mucho por internet pero a parte de la poca info practica, la gente lo hace de distinta manera. Alguien podria arrojar algo de luz para ver como se suele estructurar las sincronizaciones servidor-cliente y que el server sea autoritativo? Un ejemplo en bruto como el mio seria genial. Saludos!!
×
×
  • Create New...