123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEngine.SceneManagement;
- public class BackToHallButton : MonoBehaviour
- {
- [Header("UI References")]
- [Tooltip("返回按钮组件,如果不设置会自动获取")]
- [SerializeField] private Button backButton;
-
- [Header("Window References")]
- [Tooltip("胜利界面,拖拽WinWrapper到这里")]
- [SerializeField] private GameObject winWrapper;
- [Tooltip("失败界面,拖拽LoseWrapper到这里")]
- [SerializeField] private GameObject loseWrapper;
- private void Awake()
- {
- // 如果没有手动设置按钮,尝试自动获取
- if (backButton == null)
- {
- backButton = GetComponent<Button>();
- Debug.Log("BackToHallButton: 尝试自动获取Button组件: " + (backButton != null ? "成功" : "失败"));
- }
- if (backButton == null)
- {
- Debug.LogError("BackToHallButton: 没有找到Button组件!请确保此脚本挂载在按钮对象上。");
- return;
- }
- // 添加按钮点击事件
- backButton.onClick.AddListener(OnBackButtonClicked);
- }
- private void Start()
- {
- // 检查必要组件
- Debug.Log($"BackToHallButton: WinWrapper引用状态: {(winWrapper != null ? "已设置" : "未设置")}");
- Debug.Log($"BackToHallButton: LoseWrapper引用状态: {(loseWrapper != null ? "已设置" : "未设置")}");
- // 初始状态设置为隐藏
- if (backButton != null)
- {
- backButton.gameObject.SetActive(false);
- }
- }
- private void Update()
- {
- // 只有当胜利或失败界面显示时,才显示返回按钮
- bool shouldShowButton = (winWrapper != null && winWrapper.activeSelf) ||
- (loseWrapper != null && loseWrapper.activeSelf);
- if (backButton != null && backButton.gameObject.activeSelf != shouldShowButton)
- {
- backButton.gameObject.SetActive(shouldShowButton);
- }
- }
- private void OnBackButtonClicked()
- {
- // 加载大厅场景
- SceneManager.LoadScene("HallScene");
- }
- }
|