using Fusion; using TMPro; using UnityEngine; public enum _Role { Seeker, Trapper } [System.Serializable] public class PlayerProfile { public string Name = "Player"; public _Role Role = _Role.Seeker; } public class PlayerInfo : NetworkBehaviour { [Networked] public string playerName { get; set; } public PlayerDataManager playerDataManager; public TextMeshProUGUI nameText; public GameObject[] characterIcons; // mảng chứa icon tương ứng với từng class, có thể gán trong inspector // sau khi game object được tạo ra trên mạng, // sẽ gọi phương thức này để khởi tạo thông tin player public override void Spawned() { playerDataManager = FindFirstObjectByType(); // tìm PlayerDataManager trong scene } // phương thức này sẽ được gọi mỗi frame để cập nhật thông tin hiển thị của player public override void Render() { if (playerDataManager == null) return; if (playerDataManager.TryGetPlayerMetaData(Object.InputAuthority, out var metadata)) { var name = metadata.Name; var charClass = metadata.Role; if (nameText != null) nameText.text = $"{name} ({charClass})"; if (characterIcons != null) { for (var i = 0; i < characterIcons.Length; i++) { if (characterIcons[i] != null) characterIcons[i].SetActive(i == (int)charClass); // hiển thị icon tương ứng với class của player } } } } }