using UnityEngine; using UnityEngine.UI; using TMPro; /// /// Показывает join-код текущей сессии в игровой сцене и позволяет скопировать /// его в буфер обмена. Код берётся из SessionInfo (переживает загрузку сцены). /// Если кода нет (например, запуск через Play Mode без сессии) — прячет себя. /// public class SessionCodeView : MonoBehaviour { [SerializeField] private TMP_Text codeText; [SerializeField] private Button copyButton; [SerializeField] private GameObject root; // что скрывать, если кода нет (по умолчанию — этот объект) private void Awake() { if (root == null) root = gameObject; if (copyButton != null) copyButton.onClick.AddListener(CopyCode); } private void OnEnable() { Refresh(); } private void OnDestroy() { if (copyButton != null) copyButton.onClick.RemoveListener(CopyCode); } private void Refresh() { bool _hasCode = !string.IsNullOrEmpty(SessionInfo.JoinCode); root.SetActive(_hasCode); if (_hasCode && codeText != null) codeText.text = SessionInfo.JoinCode; } private void CopyCode() { if (string.IsNullOrEmpty(SessionInfo.JoinCode)) return; GUIUtility.systemCopyBuffer = SessionInfo.JoinCode; } }