using UnityEngine; public class UIManager : Singleton { [SerializeField] private GameObject menuUI; [SerializeField] private float distanceFromPlayer = 1.5f; protected override void Awake() { base.Awake(); if (Instance != this) { return; } if (menuUI == null) { menuUI = GameObject.Find("MenuUI"); } if (menuUI != null) { menuUI.SetActive(false); } else { Debug.LogError("UIManager:没有找到 MenuUI。", this); } } private void LateUpdate() { Transform player = GameManager.Instance.Player; if (menuUI == null || menuUI.activeSelf || player == null) { return; } PlaceMenuInFrontOfPlayer(player); } public void ToggleMenu() { if (menuUI == null) { return; } bool shouldShow = !menuUI.activeSelf; if (shouldShow && GameManager.Instance.Player != null) { PlaceMenuInFrontOfPlayer(GameManager.Instance.Player); } menuUI.SetActive(shouldShow); } private void PlaceMenuInFrontOfPlayer(Transform player) { menuUI.transform.position = player.position + player.forward * distanceFromPlayer; menuUI.transform.forward = player.forward; } }