改动与优化
This commit is contained in:
@@ -15,7 +15,20 @@ public class MusicPlayer : MonoBehaviour
|
||||
public Button Button_List;
|
||||
public Slider Slider_Progress;
|
||||
public Music_Data Music_Data => Music_Mgr.Singleton.Music_Cur;
|
||||
public static AudioSource Music_Source => Music_Mgr.Singleton.AudioSource;
|
||||
public static AudioSource Music_Source
|
||||
{
|
||||
get
|
||||
{
|
||||
BgmPlaybackManager bgm = BgmPlaybackManager.Instance;
|
||||
if (bgm != null && bgm.audioSource != null)
|
||||
{
|
||||
return bgm.audioSource;
|
||||
}
|
||||
|
||||
Music_Mgr manager = Music_Mgr.Singleton;
|
||||
return manager != null ? manager.AudioSource : null;
|
||||
}
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
if (Music_Data != null)
|
||||
@@ -32,10 +45,11 @@ public class MusicPlayer : MonoBehaviour
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (Music_Source.clip != null)
|
||||
AudioSource source = Music_Source;
|
||||
if (source != null && source.clip != null)
|
||||
{
|
||||
_sb.Clear();
|
||||
_sb.Append(Music_Mgr.Get_Time_Cur(Music_Source)).Append("/").Append(Music_Mgr.Get_Time_Max(Music_Source.clip));
|
||||
_sb.Append(Music_Mgr.Get_Time_Cur(source)).Append("/").Append(Music_Mgr.Get_Time_Max(source.clip));
|
||||
Text_Time.text = _sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,16 +113,30 @@ public class Music_Mgr : Singleton_Mono<Music_Mgr>
|
||||
public void Play(Music_Data data)
|
||||
{
|
||||
if (data == null) return;
|
||||
|
||||
Music_Cur = data;
|
||||
|
||||
if (!ShouldPlayInScene(SceneManager.GetActiveScene().name))
|
||||
{
|
||||
StopMusicPlayback();
|
||||
return;
|
||||
}
|
||||
|
||||
Music_Cur = data;
|
||||
if (TryPlayThroughBgmManager(data, true))
|
||||
{
|
||||
StopMusicPlayback();
|
||||
RefreshPlayers(data);
|
||||
return;
|
||||
}
|
||||
|
||||
AudioSource.clip = data.Clip;
|
||||
AudioSource.Play();
|
||||
|
||||
RefreshPlayers(data);
|
||||
}
|
||||
|
||||
private void RefreshPlayers(Music_Data data)
|
||||
{
|
||||
var players = Object.FindObjectsByType<MusicPlayer>(FindObjectsInactive.Include, FindObjectsSortMode.None);
|
||||
foreach (var player in players)
|
||||
{
|
||||
@@ -176,6 +190,18 @@ public class Music_Mgr : Singleton_Mono<Music_Mgr>
|
||||
return;
|
||||
}
|
||||
|
||||
if (Music_Cur == null && Music_Data_List != null && Music_Data_List.Count > 0)
|
||||
{
|
||||
Music_Cur = Music_Data_List[0];
|
||||
}
|
||||
|
||||
if (Music_Cur != null && TryPlayThroughBgmManager(Music_Cur, false))
|
||||
{
|
||||
StopMusicPlayback();
|
||||
RefreshPlayers(Music_Cur);
|
||||
return;
|
||||
}
|
||||
|
||||
if (AudioSource != null && !AudioSource.isPlaying)
|
||||
{
|
||||
if (Music_Cur != null)
|
||||
@@ -196,4 +222,21 @@ public class Music_Mgr : Singleton_Mono<Music_Mgr>
|
||||
AudioSource.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryPlayThroughBgmManager(Music_Data data, bool restart)
|
||||
{
|
||||
if (data == null || data.Clip == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
BgmPlaybackManager bgm = BgmPlaybackManager.Instance;
|
||||
if (bgm == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bgm.PlayExternalClip(data.Clip, restart);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ public class UI_Panel_Music : MonoBehaviour
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.Escape))
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
ClosePanel();
|
||||
}
|
||||
}
|
||||
private void Start()
|
||||
@@ -57,12 +57,21 @@ public class UI_Panel_Music : MonoBehaviour
|
||||
|
||||
music_Data_List = Get_Music_Page(index);
|
||||
|
||||
foreach (var item in music_Data_List)
|
||||
for (int i = 0; i < music_Data_List.Count; i++)
|
||||
{
|
||||
var item = music_Data_List[i];
|
||||
var slot = Instantiate(prefab_Music_Slot, group_Music.transform);
|
||||
UISystemBootstrap.RegisterHierarchy(slot.gameObject);
|
||||
slot.Refresh(item);
|
||||
music_Slot_List.Add(slot);
|
||||
UI_OrderedEntryAnimator.PlayFadeOnly(slot.gameObject, i, 0.16f, 0.018f, true);
|
||||
}
|
||||
|
||||
if (group_Music != null)
|
||||
{
|
||||
Canvas.ForceUpdateCanvases();
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(group_Music.transform as RectTransform);
|
||||
Canvas.ForceUpdateCanvases();
|
||||
}
|
||||
}
|
||||
public List<Music_Data> Get_Music_Page(int index)
|
||||
@@ -79,4 +88,15 @@ public class UI_Panel_Music : MonoBehaviour
|
||||
return list;
|
||||
}
|
||||
|
||||
private void ClosePanel()
|
||||
{
|
||||
UI_PanelExitUtility.PlayExitThen(gameObject, () =>
|
||||
{
|
||||
if (gameObject != null)
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user