using System.Collections; using System.Collections.Generic; using Unity.Multiplayer.Samples.BossRoom; using UnityEngine; using Unity.Netcode; public class Scoreboard : NetworkBehaviour { PlayerScoreComponent[] playerScoreComponents; List m_PlayerScoreComponents; public List playerItems; public GameObject playerItemPrefab; public Transform Parent; public override void OnNetworkSpawn() { if (IsServer) { Starter(); } } public void Starter() { playerScoreComponents = FindObjectsOfType(); for (int i = 0; i < playerScoreComponents.Length; i++) { playerScoreComponents[i].index = i; m_PlayerScoreComponents.Add(playerScoreComponents[i]); } Instantiator(playerScoreComponents.Length); StartCoroutine(ScoreUpdater()); } public void Instantiator(int count) { for (int i = 0; i < count; i++) { playerItems.Add(Instantiate(playerItemPrefab, Parent).GetComponent()); playerItems[i].PlayerScore.text = playerScoreComponents[i].CurrentScore.ToString(); playerItems[i].PlayerName.text = playerScoreComponents[i].serverCharacter.uIStateDisplayHandler.m_UIState.playerName.ToString(); } } IEnumerator ScoreUpdater() { yield return new WaitForSeconds(0.5f); while (true) { yield return new WaitForSeconds(0.1f); m_PlayerScoreComponents.Sort((p1, p2) => p2.CurrentScore.CompareTo(p1.CurrentScore)); for (int i = 0; i < playerItems.Count; i++) { playerItems[i].transform.SetSiblingIndex(m_PlayerScoreComponents[i].index); } } } }