using Unity.Netcode; using UnityEngine; using TMPro; using Unity.Collections; public class PlayerController : NetworkBehaviour { [SerializeField] private TMP_InputField PlayerNameInputField; [SerializeField] private TMP_Text PlayerNameText; public NetworkVariable PlayerName = new NetworkVariable( "Джон Бляк", NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission.Owner ); public override void OnNetworkSpawn() { PlayerName.OnValueChanged += OnPlayerNameChanged; SetPlayerNameText(); if (!IsOwner) return; this.transform.position = new Vector3(Random.Range(-10f, 10f), 1f, Random.Range(-10f, 10f)); PlayerNameInputField.onValueChanged.AddListener(OnPlayerNameInputChanged); } private void OnPlayerNameChanged(FixedString128Bytes previousValue, FixedString128Bytes newValue) { Debug.Log($"Player name changed from {previousValue} to {newValue}"); SetPlayerNameText(); } private void OnPlayerNameInputChanged(string value) { Debug.Log($"Player name input changed to {value}"); SetPlayerNameText(); } public override void OnNetworkDespawn() { PlayerName.OnValueChanged -= OnPlayerNameChanged; if(IsOwner) PlayerNameInputField.onValueChanged.RemoveListener(OnPlayerNameInputChanged); } private void SetPlayerNameText() { PlayerNameText.text = PlayerName.Value.ToString(); } }