Unity 音乐播放器 之 可视化音频名称和时间控制
1、打开Unity,新建一个空工程,在工程中新建一个脚本,脚本名称可以命名为“AudioTimeTest”,具体如下图
2、选中“AudioTimeTest”脚本,双击脚本或者右键“Open C# Project”,打开脚本,具体如下图
3、在打开的“AudioTimeTest”脚本上进行代码编辑,设置一些公共变量来取得相关信息,然后设置监听事件来控制播放进度,最后格式化显示当前时间与总时间,代码及代码说明如下图
4、AudioTimeTest 脚本具体如下:
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(AudioSource))]
public class AudioTimeTest : MonoBehaviour {
public AudioClip audioClip;
public Text audioTimeText;
public Text audioTimeName;
public Slider audioTimeSlider;
// Use this for initialization
void Start () {
audioSource = GetComponent<AudioSource>();
audioSource.clip = audioClip;
audioTimeName.text = audioClip.name;
clipHour = (int) audioSource.clip.length / 3600;
clipMinute = (int) (audioSource.clip.length - clipHour * 3600)/ 60;
clipSecond = (int) (audioSource.clip.length - clipHour * 3600 - clipMinute * 60);
audioSource.Play();
audioTimeSlider.onValueChanged.AddListener(
(delegate {
SetAudioTimeValueChange();
})
);
}
// Update is called once per frame
void Update () {
ShowAudioTime();
}
private void ShowAudioTime() {
currentHour = (int)audioSource.time / 3600;
currentMinute = (int)(audioSource.time - currentHour * 3600) / 60;
currentSecond = (int)(audioSource.time - currentHour * 3600 - currentMinute * 60);
audioTimeText.text = string.Format("{0:D2}:{1:D2}:{2:D2} / {3:D2}:{4:D2}:{5:D2}",
currentHour, currentMinute, currentSecond, clipHour, clipMinute, clipSecond);
audioTimeSlider.value = audioSource.time / audioClip.length;
}
private void SetAudioTimeValueChange() {
audioSource.time = audioTimeSlider.value * audioSource.clip.length;
}
private AudioSource audioSource;
private int currentHour;
private int currentMinute;
private int currentSecond;
private int clipHour;
private int clipMinute;
private int clipSecond;
}
5、脚本编译正确后,回到Unity界面,在场景中新建Text以及Slider,用来显示音频名称播放时间以及播放进度,然后适当调整UI布局,并且导入一个音频文件,具体如下图
6、把脚本“AudioTimeTest”赋给UI“AudioPanel”,并赋值相对应的变量,具体如下图
7、运行场景,即可以看到音频名称、音频播放时间,并且还可以通过滑钮调节播放进度,具体如下图
8、到此,《Unity 音乐播放器 之 可视化音频名称和时间控制》讲解结束,谢谢