Jump to content
UnitySpain

Alberto Bravo Rodrigo

Fosiles
  • Content Count

    2
  • Joined

  • Last visited

Community Reputation

2 Neutral

About Alberto Bravo Rodrigo

  • Rank
    Recién Llegado

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

154 profile views
  1. Hola a todos. Esta es mi primera consulta en este foro así que que disculparme si no soy muy claro exponiendo mi problema. Estoy intentando construir un Ranking de puntuaciones int para mi juego multijugador y estoy teniendo algún problema para construirlo. Estoy trabajando con Unet HLAPI y cuando un cliente se conecta se añade el gameObject jugador del cliente a un vector de gameObjects. Ese vector que contiene los jugadores de los clientes se ordena utilizando la clase Sort para tener los jugadores correctamente ordenados en función de la puntuación que tienen almacenada en una variable int, para mostrarlo posteriormente en el ranking en la UI. Hasta ahí creo que todo correcto. El problema es que cuando un jugador se desconecta de la partida la clase Sort sigue intentando acceder al gameObject que ya no está dentro del vector que contenía a ese gameObject y se generan muchos errores de referencia. Entonces yo necesitaría hacer que no se intente acceder a ese gameObject cuando el cliente se haya desconectado. He intentado varios caminos y ninguno me ha funcionado correctamente. A continuación pongo mi código para alguna sugerencia. No sé si estoy utilizando el mejor camino para hacer el Ranking, si tuviera que cambiar mi código para algún camino mejor estaría abierto así que acepto todo tipo de sugerencias. Gracias por vuestra ayuda de antemano. Código C#: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Networking; public class RankingMatch : NetworkBehaviour { [SerializeField] List<GameObject> zombies = new List<GameObject>(); [Header("Time Variables")] [SerializeField] private float time; [SerializeField] private float nextcomunicationTime = 1f; [SerializeField] private float comunicationTime; void Start() { } void Update() { time = GameObject.Find("NetworkManager").GetComponent<CustomNetworkManager>().time; if (time >= comunicationTime) { if (zombies.Count >= 2) { zombies.Sort(new sort()); } comunicationTime = Time.time + nextcomunicationTime; } } public void AddZombie(GameObject zombie) { zombies.Add(zombie); } public void DeleteZombie(GameObject zombie) { zombies.Remove(zombie); Debug.Log("Zombie Deleted"); } private class sort : IComparer<GameObject> { int IComparer<GameObject>.Compare(GameObject _objA, GameObject _objB) { int t1 = _objA.GetComponent<ZombieAttributes_Net>().zombieScore; int t2 = _objB.GetComponent<ZombieAttributes_Net>().zombieScore; return t1.CompareTo(t2); } } }
  2. Hola me llamo Alberto (Beto para los amigos) soy nuevo aquí en el foro y espero que me sea de gran ayuda haber entrado aquí. Intentaré ayudar también en todo lo que me sea posible a los usuarios. Saludos.
×
×
  • Create New...