using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.SceneManagement; using System.Collections.Generic; public class btmandtopController : MonoBehaviour { [Header("player unique so")] public Player_SO player_SO; [Header("put prefabs here")] public GameObject putPrefabsHere; [Header("son buttons")] public Button settings_launch; public Button userInfo_launch; public Button store_launch; public Button showLevel_display; public Button email_display; public Button notice_display; public Button button_Music; [Header("MusicPic")] public RectTransform musicPicRoot; public bool showMusicPicInUI = false; public string uiSceneName = "UI_UI"; public float musicPicFadeTime = 0.25f; [Header("sig prefabs")] public GameObject showLevel_prefab; public GameObject store_prefab; public GameObject settings_prefab; public GameObject userInfo_prefab; public GameObject email_prefab; public GameObject notice_prefab; [Header("New Back Buttons")] [SerializeField] private Button back_navButton; [SerializeField] private Button home_navButton; [SerializeField] private Button settings_navButton; [SerializeField] private string homeSceneName = "UI_UI"; [SerializeField] private string backFallbackSceneName = "Main_main"; private UnityAction instantiateSettings; private UnityAction instantiateUserInfo; private UnityAction instantiateStore; private UnityAction instantiateShowLevel; private UnityAction instantiateEmail; private UnityAction instantiateNotice; private UnityAction navBackAction; private UnityAction navHomeAction; private UnityAction navSettingsAction; // cached reference to the settings instance to ensure only one exists private GameObject settingsInstance; private GameObject showLevelInstance; private GameObject emailInstance; private GameObject noticeInstance; private CanvasGroup musicPicGroup; private Coroutine musicPicFade; private bool musicPicVisible = true; private bool navSceneLoading = false; private static readonly List sceneHistory = new List(); private static bool sceneHistoryHooked = false; private static string trackedCurrentScene = string.Empty; void Awake() { EnsureMusicPicRoot(); InitializeSceneHistoryIfNeeded(); } void Start() { if (button_Music == null) { var btn = transform.Find("Button_Music") as RectTransform; if (btn != null) button_Music = btn.GetComponent