整合包
gameplay bundle has been imported together
This commit is contained in:
@@ -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:
|
||||
Reference in New Issue
Block a user