unity 中音乐播放器

音乐管理器,配置好对应组件

using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class MusicPlayer : MonoBehaviour
{
    private AudioSource audioSource;
    public AudioClip[] songs;
    private int currentSongIndex = 0;
    public TextMeshPro songNameText;// 引用UI文本组件

    [Header("ui组件")]
    public Text totalTimeText;
    public Text currentTimeText;
    public Slider timeSlider;


    private float totalDuration;
    private bool isPlay;

    private void Start()
    {
        audioSource = GetComponent<AudioSource>();

        PlayCurrentSong();

        timeSlider.onValueChanged.AddListener(OnSliderValueChanged);
        UpdateSongTimeText();

    }
    public void SwitchAudioPlayState()
    {
        if(isPlay)
        {
            PlayCurrentSong();
        }
        else
        {
            PauseMusic();
        }
        isPlay=!isPlay;
    }
    public void UpdateSongTimeText()
    {
        // 设置滑动条的最大值为1,因为时间范围为0到1
        timeSlider.maxValue = 1f;

        // 获取歌曲总时长
        totalDuration = audioSource.clip.length;

        // 更新总时长文本
        totalTimeText.text = FormatTime(totalDuration);
    }

    public void PlayCurrentSong()
    {
        if (audioSource != null && songs.Length > 0)
        {
            audioSource.clip = songs[currentSongIndex];
            audioSource.Play();

            UpdateSongNameText(); // 更新UI文本显示
        }
    }

    public void PauseMusic()
    {
        if (audioSource != null && audioSource.isPlaying)
        {
            audioSource.Pause();
        }
    }

    public void StopMusic()
    {
        if (audioSource != null && audioSource.isPlaying)
        {
            audioSource.Stop();
        }
    }

    public void NextSong()
    {
        currentSongIndex++;
        if (currentSongIndex >= songs.Length)
        {
            currentSongIndex = 0;
        }
        audioSource.time=0;
        PlayCurrentSong();
        UpdateSongTimeText();
    }

    public void PreviousSong()
    {
        currentSongIndex--;
        if (currentSongIndex < 0)
        {
            currentSongIndex = songs.Length - 1;
        }
        audioSource.time=0; 
        PlayCurrentSong();
        UpdateSongTimeText();
    }
    public void FastForward(float seconds)
    {
        if (audioSource != null && audioSource.isPlaying)
        {
            audioSource.time += seconds;
        }
    }
    public void SlowForward(float seconds)
    {
        if (audioSource != null && audioSource.isPlaying)
        {
            audioSource.time -= seconds;
        }
    }
    private void UpdateSongNameText()
    {
        if (songNameText != null)
        {
            songNameText.text = songs[currentSongIndex].name;
        }
    }

    private void Update()
    {
        // 更新当前进行时间
        float currentTime = audioSource.time;
        currentTimeText.text = FormatTime(currentTime);

        // 更新滑动条的值
        timeSlider.value = currentTime / totalDuration;

        if (!audioSource.isPlaying&&!isPlay )
        {
            NextSong();
        }
    }

    public void OnSliderValueChanged(float value)
    {
        // 将滑动条的值映射到歌曲的时间范围内
        float targetTime = value * totalDuration;

        // 设置音频源的播放时间
        audioSource.time = targetTime;
    }

    private string FormatTime(float time)
    {
        int minutes = Mathf.FloorToInt(time / 60);
        int seconds = Mathf.FloorToInt(time % 60);
        return string.Format("{0:00}:{1:00}", minutes, seconds);
    }
}

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Unity简易音乐播放器是一种基于Unity引擎开发的简单音乐播放器应用程序。它具有以下特点和功能: 1. 用户界面友好:该音乐播放器使用Unity的UI系统进行开发,具有直观的用户界面,易于操作和使用。用户可以轻松地浏览和选择音乐文件进行播放。 2. 音乐文件管理:该播放器允许用户管理和组织音乐文件。用户可以导入、导出和删除音乐文件,创建和编辑个人播放列表。 3. 播放控制功能:播放器具有基本的音乐播放控制功能,如播放、暂停、停止、上一曲和下一曲。用户可以通过简单的点击按钮来控制音乐的播放。 4. 音乐可视化效果:播放器还具有音乐可视化效果,通过动态显示音乐的波形图或频谱图等视觉效果,增加音乐欣赏的乐趣。 5. 自定义选项:用户可以根据自己的喜好和需求进行各种自定义设置,如音量调节、音乐循环模式、音效等。 6. 多平台支持:该播放器可以在多个平台上运行,如Windows、Mac、iOS和Android等。 7. 其他功能:播放器还可以提供一些其他功能,如定时关闭、背景播放等。 Unity简易音乐播放器是一种方便实用的应用程序,可以帮助用户管理和享受音乐。通过其友好的用户界面和丰富的功能,用户可以轻松地播放和控制自己喜爱的音乐。无论是在电脑上还是移动设备上,都可以随时随地欣赏好听的音乐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值