52 lines
1.5 KiB
C#
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();
|
|
}
|
|
}
|