HartoukChartEditor/Assets/Script/TestScript/Player.cs

112 lines
3.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class Player : MonoBehaviour
{
public TextMeshProUGUI musicName; //显示歌曲的名字及歌手
public TextMeshProUGUI nowTime; //显示歌曲已播放的时间长度
public TextMeshProUGUI allTime; //显示当前歌曲的总时间长度
public Slider slid; //进度条
public Transform buttons; //按钮所在的集合体
public AudioClip[] auc; //存放歌曲的数组
public AudioSource aus; //音频播放器
private int currentHour, currentMinute, currentSecond; //已播放的时间(时、分、秒)
private int clipHour, clipMinute, clipSecond; //总时间(时、分、秒)
public static Player _instance;
void Start()
{
_instance = this;
aus.Stop(); //开始运行时不播放,点播放键才开始播放
#region value变化使onValueChanged
///
/// 所以新建了个DragSlider脚本挂在进度条上来实现拖动播放的效果
///
//slid.onValueChanged.AddListener(delegate
//{
// //加上之后,避免拖动进度条到最后不松手时报错
// if (slid.value == 1)
// return;
// //给进度条添加事件监听,每当拖动进度条,歌曲从相应的位置播放
// aus.time = slid.value * aus.clip.length;
//});
buttons.GetComponent<Button>().onClick.AddListener(Play);
#endregion
}
void Update()
{
//当前播放过的时间
nowtime();
//当前正在播放的音频的总时间
alltime();
//当前正在播放的音乐
nowMusic();
}
void nowtime()//当前播放过的时间
{
currentHour = (int)aus.time / 3600; //时
currentMinute = (int)(aus.time - currentHour * 3600) / 60;//分
currentSecond = (int)(aus.time - currentHour * 3600 - currentMinute * 60);//秒
//显示当前播放过的时间
nowTime.text = aus.time.ToString();
//进度条变化
//(之后更新版)如果当前没有拖拽进度条
//
}
void alltime()//歌曲总时间
{
//slid.value = 0;
clipHour = (int)aus.clip.length / 3600;//时
clipMinute = (int)(aus.clip.length - clipHour * 3600) / 60;//分
clipSecond = (int)(aus.clip.length - clipHour * 3600 - clipMinute * 60);//秒
//显示歌曲总时间
allTime.text = string.Format("{0:D2}:{1:D2}:{2:D2}",
clipHour, clipMinute, clipSecond);
}
//private void LastMusic() //上一曲
//{
// index--; //索引减一
// //若索引等于-1即当前播放的音频是aus数组列表的第一首则上一首应为aus数组列表的最后一首
// if (index == -1)
// index = auc.Length - 1;
// aus.clip = auc[index]; //音频播放器的音频为aus数组中索引对应的音频
// slid.value = 0; //初始化进度条
// aus.time = 0; //初始化音乐的播放时间(从头开始播)
// aus.Play(); //播放音频
//}
private void Pause() //暂停
{
aus.Pause();
}
private void Play() //播放
{
//如果当前正在播放,则返回
if (aus.isPlaying)
return;
aus.Play();
}
void nowMusic() //当前的音频
{
AudioClip clip = aus.clip; //当前播放的音频
string n = aus.clip.name; //当前播放的音频的名字
//string[] na = n.Split('-'); //以“-”为分割点,把音频名分为若干部分
//显示当前正在播放的歌曲的名字【歌曲名默认字体25号+歌手名(默认字体18号红色)的形式】
musicName.text = n;
//index = Array.IndexOf(auc, clip);//当前播放的音频在aus数组中的索引
/*Slider(); */ //当进度条走到最后时,播放下一曲
}
}