Files
Learning-UnityNGO/Assets/CONTENT/FEATURES/DEV-TEST/Scripts/PlayerController.cs
T
2026-06-17 20:44:53 +03:00

52 lines
1.5 KiB
C#

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<FixedString128Bytes> PlayerName = new NetworkVariable<FixedString128Bytes>(
"Джон Бляк",
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();
}
}