using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class MultiplayerNickUI : MonoBehaviour { [SerializeField] private CanvasGroup canvasGroup; [SerializeField] private Text nickTemplate; private Dictionary currentNicks = new Dictionary(); private void MultiplayerAvatarControler_OnUpdateRemote(MultiplayerAvatarControler mac) { foreach (KeyValuePair currentNick in currentNicks) { if (currentNick.Value == mac) { return; } } Text text = Object.Instantiate(nickTemplate, canvasGroup.transform); text.gameObject.SetActive(value: true); text.text = mac.photonView.Owner.NickName; currentNicks.Add(text, mac); } private void MultiplayerManager_On_EnterRoomLocation() { canvasGroup.alpha = 1f; } private void OnEnable() { nickTemplate.gameObject.SetActive(value: false); MultiplayerAvatarControler.OnUpdateRemote += MultiplayerAvatarControler_OnUpdateRemote; MultiplayerManager.On_EnterRoomLocation += MultiplayerManager_On_EnterRoomLocation; } private void OnDisable() { MultiplayerAvatarControler.OnUpdateRemote -= MultiplayerAvatarControler_OnUpdateRemote; MultiplayerManager.On_EnterRoomLocation -= MultiplayerManager_On_EnterRoomLocation; } private void Update() { List list = new List(); foreach (KeyValuePair currentNick in currentNicks) { if (currentNick.Value == null) { list.Add(currentNick.Key); } } foreach (Text item in list) { currentNicks.Remove(item); Object.Destroy(item.gameObject); } foreach (KeyValuePair currentNick2 in currentNicks) { Text key = currentNick2.Key; MultiplayerAvatarControler value = currentNick2.Value; if (Camera.main != null && GameManager.Instance.addectiveSceneLoaded == "none") { float num = Vector3.Distance(value.transform.position, Camera.main.transform.position); float num2 = Vector3.Angle(value.transform.position - Camera.main.transform.position, Camera.main.transform.forward); if (num <= 50f && num2 > -90f && num2 < 90f) { key.gameObject.SetActive(value: true); Vector3 position = value.transform.position + Vector3.up * 2f; Vector3 position2 = Camera.main.WorldToScreenPoint(position); currentNick2.Key.transform.position = position2; } else { key.gameObject.SetActive(value: false); } } else { key.gameObject.SetActive(value: false); } } } }