unity音乐实现了播放和切换,但暂停不了?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity音乐实现了播放和切换,但暂停不了?相关的知识,希望对你有一定的参考价值。
代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Test : MonoBehaviour
public GameObject AudioObject;//音乐预知物体,设置tag
private GameObject musicInstant = null;//用于判断场景中是否有这个物体
//将要轮流播放的音乐组
public AudioClip[] audioGroup;
//当前播放的是谁
private int playingIndex;
//是否允许播放音乐
private bool canPlayAudio;
//Audiosource组件
private AudioSource audioSource;
private bool canNextAudio;
private bool canStopAudio;
void Start()
musicInstant = GameObject.FindGameObjectWithTag("sound");//设置成相同的tag
if (musicInstant == null)//最开始加载完场景,musicInstant = null,进入这个方法对音乐的组件进行克隆,此后都是对这个组件进行操作
musicInstant = (GameObject)Instantiate(AudioObject);//克隆原始物体
public void PlayMusic()
musicInstant.gameObject.GetComponent<AudioSource>().Play();
public void NextMusic()
musicInstant.gameObject.GetComponent<AudioSource>().Pause();
public void StopMusic()
musicInstant.gameObject.GetComponent<AudioSource>().Stop();
void Update()
if (canPlayAudio)
PlayAudio();
canPlayAudio = false;
if (canStopAudio)
StopAudio();
playingIndex = 5;
canPlayAudio = false;
if (!audioSource.isPlaying)
if (canNextAudio)
return;
playingIndex++;
if (playingIndex >= audioGroup.Length)
playingIndex = 0;
canPlayAudio = true;
else
PauseAudio();
canPlayAudio = false;
//-----------------------------------------------------
private void PlayAudio()
audioSource.clip = audioGroup[playingIndex];
audioSource.Play();
private void StopAudio()
audioSource.clip = audioGroup[playingIndex];
audioSource.Stop();
private void PauseAudio()
audioSource.clip = audioGroup[playingIndex];
audioSource.Pause();
而且 你调用的暂停方法里
private void PauseAudio()
audioSource.clip = audioGroup[playingIndex];这行有点多余(虽然加了也没什么特别的问题)
audioSource.Pause();
以下为假设
如果 不会暂停播放的内容,请检查调用是否成功
如果 暂停后 播放又从头开始了,检查 播放的是否是同一个audioSource.clip(比如 播放的是New的内容或者切换过其他的clip又切换了回来),
或者 是否重复调用audioSource.Play();方法(在播放后再次调用播放方法,播放内容会从头开始)
条件不足,只能猜测,具体情况请追问。
实现视频的暂停播放,上下切换等功能
这里只说明一些逻辑思维:详细代码可以看我的——unity视频播放器
1、暂停与播放之间的切换
要实现点击播放,再点击暂停的功能
则要知道你修改的参数是哪一个(比如Video中的是Pause()函数和Play()函数)PS:AudioSoure中的是Pause()和UnPause()——判断依据:Video.isPlaying(是一个bool类型)
两个图片之间的切换
变为
首先这是两个功能按钮,一个一开始会隐藏,当点击图一中的按钮时,图二按钮会显示出来,再点击图二按钮时图二隐藏则出现的是图一的按钮。(图二的按钮层级是要在图一按钮下面的,即显示在画面的上一层)PS:图二与图一按钮是父子层级结构的。
综上所述则可以实现点击切换不同的按钮和视频的暂停与播放功能。
2、视频上下切换的功能
上下按钮实现切换不同的视频
点击按钮切换不同视频——要有一个播放视频的列表(可以用到数组)——问题:不能够自动循环的跳转或暂停所切换的视频——查询到对应的视频ID才能够进行播放(可以定义一个视频ID)——写两个函数分别判断视频的Id是否到了最后一个或是第一个——切换到最后一个,将ID切换到第一个,另一种情况反之。
以下代码是实现上下切换的主要代码:
//<summary>
//上一首
//</summary>
public void Prve()
_playId--;
if (_playId < 0)
//_playId = 0; //到头了就不能切换了
_playId = VideoList.Length - 1; //切换到最后一首
Debug.Log("到头了");
Play();
//<summary>
//下一首
//</summary>
public void Next()
_playId++;
if (_playId > VideoList.Length - 1)
//_playId = ClipList.Length - 1; //到尾了就不能切换了
_playId = 0; //切换到第一首
Debug.Log("到尾了");
Play();
辅助代码——按钮控制:
public Button Pausebtn;
void Start()
Pausebtn.onClick.AddListener(PauseFun);
private void PrevFun()
MyVideoPlayer.Instance.Next();
TxtInfo.text = MyVideoPlayer.Instance.GetMusicName(); //前一个代码是要写成单例模式,这里是调用其方法。
今天就记录到这里啦!
期待自己的学习更近一步!加油加油!!!
以上是关于unity音乐实现了播放和切换,但暂停不了?的主要内容,如果未能解决你的问题,请参考以下文章