using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class UI_Panel_Main : Singleton_Mono { public int Character_Index { set { character_Index = value; Set_Character_Illustration(Get_Character_Image_Data(character_Index).Image_Full); } get => character_Index; } public int character_Index = 1; [SerializeField] List data_List; public List Data_List => data_List; [SerializeField] Button button_Character_Set; [SerializeField] GameObject ui_Panel_Character; [SerializeField] Button button_Encyclopendia; [SerializeField] GameObject ui_Panel_Encyclopendia; [SerializeField] Image image_Character; [SerializeField] Button button_Mail; [SerializeField] GameObject ui_Panel_Mail; [SerializeField] Button button_Notice; [SerializeField] GameObject ui_Panel_Notice; [SerializeField] Button button_Level; [SerializeField] GameObject ui_Panel_Level; [SerializeField] MusicPlayer music_Player; [SerializeField] GameObject ui_Panel_Music; [SerializeField] Button button_Story; [SerializeField] GameObject ui_Panel_Story; [SerializeField] Button button_Setting; [SerializeField] GameObject ui_Panel_Setting; [SerializeField] Button button_Idol; [SerializeField] Button button_Select_Music; [SerializeField] string ui_Select_Music_Scene_Name= "selectYourSongFirst"; protected override void In_Init() { } protected override bool Is_Singleton_Auto() { return true; } protected override void OnDestroy() { foreach (var item in data_List) { Destroy(item); } base.OnDestroy(); } private void Start() { data_List = Resources.LoadAll("Data").ToList(); List data_List_New = new(); foreach (var item in data_List) { var so = Instantiate(item); data_List_New.Add(so); } data_List = data_List_New; Character_Index = character_Index; if (button_Character_Set != null) button_Character_Set.onClick.AddListener( () => ui_Panel_Character.SetActive(true)); if (button_Mail != null) button_Mail.onClick.AddListener( () => ui_Panel_Mail.SetActive(true)); if (button_Notice != null) button_Notice.onClick.AddListener( () => ui_Panel_Notice.SetActive(true)); if (button_Level != null) button_Level.onClick.AddListener( () => ui_Panel_Level.SetActive(true)); Character_Index = character_Index; if (button_Encyclopendia != null) button_Encyclopendia.onClick.AddListener( () => ui_Panel_Encyclopendia.SetActive(true)); if (button_Story != null) button_Story.onClick.AddListener( () => ui_Panel_Story.SetActive(true)); if (music_Player != null && music_Player.Button_List != null) music_Player.Button_List.onClick.AddListener( () => ui_Panel_Music.SetActive(true)); if (button_Setting != null) button_Setting.onClick.AddListener( () => ui_Panel_Setting.SetActive(true)); if (button_Select_Music != null) button_Select_Music.onClick.AddListener( () => SceneManager.LoadScene(ui_Select_Music_Scene_Name,LoadSceneMode.Single)); } public Character_Data_Image_SO Get_Character_Image_Data(int index) { return data_List.Find(i => i.index == index); } public Character_Data_Image_SO Get_Character_Image_Data() { return data_List.Find(i => i.index == character_Index); } public void Set_Character_Illustration(Sprite sprite) { if (c_Character_Illustration_Anim != null) { StopCoroutine(c_Character_Illustration_Anim); } if (image_Character.TryGetComponent(out CanvasGroup canvasGroup)) { c_Character_Illustration_Anim = StartCoroutine(C_Character_Illustration_Anim(canvasGroup, () => { image_Character.sprite = sprite; image_Character.SetNativeSize(); })); } } Coroutine c_Character_Illustration_Anim; [SerializeField] float character_Illustration_Time = 0.5f; IEnumerator C_Character_Illustration_Anim(CanvasGroup canvasGroup, Action onHide) { float a = 1f / character_Illustration_Time; while (canvasGroup.alpha > 0) { canvasGroup.alpha -= a * Time.deltaTime; yield return null; } onHide?.Invoke(); while (canvasGroup.alpha < 1) { canvasGroup.alpha += a * Time.deltaTime; yield return null; } } }