You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
3 days ago
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
using Unity.Netcode;
|
||
|
|
||
|
public class StaminaUI : MonoBehaviour
|
||
|
{
|
||
|
private StaminaManager localStaminaManager;
|
||
|
private Image staminaBar;
|
||
|
|
||
|
private void Start()
|
||
|
{
|
||
|
staminaBar = GetComponent<Image>();
|
||
|
|
||
|
if (staminaBar == null)
|
||
|
{
|
||
|
Debug.LogError("[StaminaUI] No Image component found on this GameObject!");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Wait for the player to be assigned
|
||
|
InvokeRepeating(nameof(FindLocalPlayerStaminaManager), 0f, 1f);
|
||
|
}
|
||
|
|
||
|
private void FindLocalPlayerStaminaManager()
|
||
|
{
|
||
|
foreach (var player in FindObjectsOfType<StaminaManager>())
|
||
|
{
|
||
|
if (player.TryGetComponent<NetworkObject>(out var networkObject) && networkObject.IsOwner)
|
||
|
{
|
||
|
localStaminaManager = player;
|
||
|
CancelInvoke(nameof(FindLocalPlayerStaminaManager)); // Stop checking once found
|
||
|
Debug.Log("[StaminaUI] Found local player's StaminaManager.");
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void Update()
|
||
|
{
|
||
|
if (localStaminaManager != null && staminaBar != null)
|
||
|
{
|
||
|
staminaBar.fillAmount = localStaminaManager.CurrentStamina / localStaminaManager.MaxStamina;
|
||
|
}
|
||
|
}
|
||
|
}
|