主界面添加,许多bug修复。祝贺黑盒1如期开始
This commit is contained in:
@@ -1,9 +1,59 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class Music_Mgr : Singleton_Mono<Music_Mgr>
|
||||
{
|
||||
private void OnEnable()
|
||||
{
|
||||
SceneManager.sceneLoaded += OnSceneLoaded;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
SceneManager.sceneLoaded -= OnSceneLoaded;
|
||||
}
|
||||
|
||||
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
||||
{
|
||||
// 现在这两个场景是不合规的,需要停止播放
|
||||
bool isDisallowedScene = scene.name == "Main_main" || scene.name == "gamePlay_gamePlay";
|
||||
|
||||
if (isDisallowedScene)
|
||||
{
|
||||
// 如果是不合规场景且正在播放,则停止
|
||||
if (AudioSource != null && AudioSource.isPlaying)
|
||||
{
|
||||
AudioSource.Stop();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果是合规场景(其他所有场景)且当前没在播放,则尝试播放
|
||||
if (AudioSource != null && !AudioSource.isPlaying)
|
||||
{
|
||||
if (Music_Cur != null)
|
||||
{
|
||||
AudioSource.Play();
|
||||
}
|
||||
else if (Music_Data_List != null && Music_Data_List.Count > 0)
|
||||
{
|
||||
Play(Music_Data_List[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 切换场景后,如果存在播放器UI,确保其显示正确的数据
|
||||
if (Music_Cur != null)
|
||||
{
|
||||
var players = Object.FindObjectsByType<MusicPlayer>(FindObjectsInactive.Include, FindObjectsSortMode.None);
|
||||
foreach (var player in players)
|
||||
{
|
||||
player.Refresh(Music_Cur);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static string Get_Time_Max(AudioClip clip)
|
||||
{
|
||||
@@ -68,9 +118,33 @@ public class Music_Mgr : Singleton_Mono<Music_Mgr>
|
||||
}
|
||||
public void Play(Music_Data data)
|
||||
{
|
||||
if (data == null) return;
|
||||
Music_Cur = data;
|
||||
AudioSource.clip = data.Clip;
|
||||
AudioSource.Play();
|
||||
|
||||
// 刷新所有正在显示的 MusicPlayer UI
|
||||
var players = Object.FindObjectsByType<MusicPlayer>(FindObjectsInactive.Include, FindObjectsSortMode.None);
|
||||
foreach (var player in players)
|
||||
{
|
||||
player.Refresh(data);
|
||||
}
|
||||
}
|
||||
|
||||
public void Next()
|
||||
{
|
||||
if (Music_Data_List == null || Music_Data_List.Count == 0) return;
|
||||
int index = Music_Data_List.IndexOf(Music_Cur);
|
||||
index = (index + 1) % Music_Data_List.Count;
|
||||
Play(Music_Data_List[index]);
|
||||
}
|
||||
|
||||
public void Last()
|
||||
{
|
||||
if (Music_Data_List == null || Music_Data_List.Count == 0) return;
|
||||
int index = Music_Data_List.IndexOf(Music_Cur);
|
||||
index = (index - 1 + Music_Data_List.Count) % Music_Data_List.Count;
|
||||
Play(Music_Data_List[index]);
|
||||
}
|
||||
protected override bool Is_Singleton_Auto()
|
||||
{
|
||||
|
||||
@@ -60,6 +60,7 @@ public class UI_Panel_Music : MonoBehaviour
|
||||
foreach (var item in music_Data_List)
|
||||
{
|
||||
var slot = Instantiate(prefab_Music_Slot, group_Music.transform);
|
||||
UISystemBootstrap.RegisterHierarchy(slot.gameObject);
|
||||
slot.Refresh(item);
|
||||
music_Slot_List.Add(slot);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user