Files
Learning-UnityNGO/Assets/CONTENT/FEATURES/DEV-TEST/Scripts/PlayerFacade.cs
T

60 lines
1.7 KiB
C#

using UnityEngine;
using Unity.Netcode;
using System.Collections;
public class PlayerFacade : NetworkBehaviour
{
// [SerializeField] private PlayerController playerController;
[SerializeField] private PlayerMovement playerMovement;
[SerializeField] private PlayerHealth playerHealth;
[SerializeField] private PlayerShoot playerShoot;
[SerializeField] private PlayerShield playerShield;
[SerializeField] private PlayerUIController playerUIController;
public PlayerHealth PlayerHealth => playerHealth;
public override void OnNetworkSpawn()
{
// Клон (GhostPlayer) — серверный объект. На хосте он считается IsOwner,
// из-за чего перехватывал HUD игрока. Игроковую логику на клоне не запускаем.
if(GetComponent<GhostPlayer>() != null) return;
if(IsOwner)
{
StartCoroutine(InitPlayerUIController());
if(playerMovement != null)
{
playerMovement.Init();
}
if(playerShoot != null)
{
playerShoot.Init();
}
if (playerShield != null)
playerShield.InitInput();
}
if(playerHealth != null)
{
playerHealth.Init(IsServer);
}
}
private IEnumerator InitPlayerUIController()
{
yield return new WaitUntil(() =>
{
playerUIController = FindFirstObjectByType<PlayerUIController>();
return playerUIController != null;
});
if(playerUIController != null)
{
playerUIController.Init(this);
}
}
}