整合包

gameplay bundle has been imported together
This commit is contained in:
FloatGaming
2025-08-09 18:29:32 +08:00
parent e7962bf492
commit 1d818fa4eb
1654 changed files with 431813 additions and 103 deletions
@@ -0,0 +1,38 @@
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class MusicPlayer : MonoBehaviour
{
public Image Image_Cover;
public TMP_Text Text_Title;
public TMP_Text Text_Time;
public Button Button_Play;
public Button Button_Pause;
public Button Button_Last;
public Button Button_Next;
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;
private void Start()
{
if (Music_Data != null)
{
Refresh(Music_Data);
}
}
public void Refresh(Music_Data data)
{
Image_Cover.sprite = data.Cover;
Text_Title.text = data.Name;
}
private void Update()
{
if (Music_Source.clip != null)
{
Text_Time.text = Music_Mgr.Get_Time_Cur(Music_Source) + "/" + Music_Mgr.Get_Time_Max(Music_Source.clip);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a632bc37b464fc54496812fa78e321a3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,56 @@
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class Music_Mgr : Singleton_Mono<Music_Mgr>
{
public static string Get_Time_Max(AudioClip clip)
{
return Get_Time(clip == null ? 0 : (int)clip.length);
}
public static string Get_Time_Cur(AudioSource aus)
{
return Get_Time((int)aus.time);
}
public static string Get_Time(int time)
{
var currentHour = time / 3600;
var currentMinute = (time - currentHour * 3600) / 60;
var currentSecond = time - currentHour * 3600 - currentMinute * 60;
return string.Format("{0:D2}:{1:D2}:{2:D2} ",
currentHour, currentMinute, currentSecond);
}
public static float Get_Time_Cur_Prv(AudioSource aus)
{
return aus.time / aus.clip.length;
}
public List<Music_Data> Music_Data_List;
public AudioSource AudioSource;
public Music_Data Music_Cur;
protected override void In_Init()
{
if (TryGetComponent(out AudioSource) == false)
{
AudioSource = gameObject.AddComponent<AudioSource>();
}
Music_Data_List = Resources.LoadAll<Music_Data>("Data/Music").ToList();
if (Music_Data_List.Count > 0)
{
Play(Music_Data_List[0]);
}
}
public void Play(Music_Data data)
{
Music_Cur = data;
AudioSource.clip = data.Clip;
AudioSource.Play();
}
protected override bool Is_Singleton_Auto()
{
return true;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 33690802e9b6e224da3b831aae73d867
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,81 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class UI_Panel_Music : MonoBehaviour
{
[SerializeField] UI_Slot_Music prefab_Music_Slot;
[SerializeField] List<UI_Slot_Music> music_Slot_List;
[SerializeField] List<Music_Data> music_Data_List;
[SerializeField] GridLayoutGroup group_Music;
[SerializeField] MusicPlayer musicPlayer;
[SerializeField] TMP_Text text_Page;
[SerializeField] Button button_Page_Last;
[SerializeField] Button button_Page_Next;
[SerializeField] int pageIndex;
[SerializeField] int pageIndexMax => Music_Mgr.Singleton.Music_Data_List.Count / pageCount;
[SerializeField] int pageCount = 8;
private void Awake()
{
var mgr = Music_Mgr.Singleton;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
gameObject.SetActive(false);
}
}
private void Start()
{
music_Slot_List = group_Music.GetComponentsInChildren<UI_Slot_Music>().ToList();
Clear_Page();
Set_Page(pageIndex);
button_Page_Last.onClick.AddListener(() => { Set_Page(pageIndex - 1); });
button_Page_Next.onClick.AddListener(() => { Set_Page(pageIndex + 1); });
}
void Clear_Page()
{
foreach (var item in music_Slot_List)
{
Destroy(item.gameObject);
}
music_Slot_List.Clear();
}
public void Set_Page(int index)
{
if (index > pageIndexMax) return;
if (index < 0) return;
Clear_Page();
pageIndex = index;
text_Page.text = index + 1 + "/" + (pageIndexMax + 1);
music_Data_List = Get_Music_Page(index);
foreach (var item in music_Data_List)
{
var slot = Instantiate(prefab_Music_Slot, group_Music.transform);
slot.Refresh(item);
music_Slot_List.Add(slot);
}
}
public List<Music_Data> Get_Music_Page(int index)
{
var list = new List<Music_Data>();
for (int i = index * pageCount; i < Music_Mgr.Singleton.Music_Data_List.Count; i++)
{
if (i >= (index + 1) * pageCount)
{
break;
}
list.Add(Music_Mgr.Singleton.Music_Data_List[i]);
}
return list;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d6f9b5d0cc46d074da7dd58bc5eb699d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,20 @@
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class UI_Slot_Music : MonoBehaviour
{
public Image Image_Cover;
public TMP_Text Text_Title;
public TMP_Text Text_Description;
public TMP_Text Text_Time;
public Button Button_Play;
public void Refresh(Music_Data data)
{
Image_Cover.sprite = data.Cover;
Text_Title.text = data.Name;
Text_Description.text = data.Description;
Text_Time.text = Music_Mgr.Get_Time_Max(data.Clip);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e84a3ae7079924148b7f3e5a7b7798be
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: