Unity 视频控制暂停播放以及滑动条拖拽(笔记)

Posted X-q-X

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 视频控制暂停播放以及滑动条拖拽(笔记)相关的知识,希望对你有一定的参考价值。

文章目录


3d物体播放视频

  1. 创建一个cube,在cube下创建canvas,然后调到世界,并调整位置和大小,

  2. cube上添加audio source组件和video player组件

  3. 在创建两个image,image下面创建text文本,分别为暂停和播放,然后再image上添加button组件

  4. 创建脚本,写代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;

public class AudioPlayer : MonoBehaviour 
    VideoPlayer videoPlayer;
    Slider slider;
	// Use this for initialization
	void Start () 
        videoPlayer = GetComponent<VideoPlayer>();
        slider = transform.GetChild(0).GetChild(0).GetComponent<Slider>();
        slider.maxValue=(float)videoPlayer.clip.length;//视频长度
	
	public void Play()
    
        videoPlayer.Play();
    
    public void Pause()
    
        videoPlayer.Pause();
    
    public void ChangeFloat(float t)
    
        if (SliderPointer.isClick)
        
            videoPlayer.time = slider.value;
        
        
    
    // Update is called once per frame
    void Update () 
        if (!SliderPointer.isClick)
        
            slider.value = (float)videoPlayer.time;
        
        
    


  1. 再创建一个脚本挂在slider上,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class SliderPointer : MonoBehaviour,IPointerDownHandler,IPointerUpHandler 
    public static bool isClick = false;
    public void OnPointerDown(PointerEventData eventData)
    
        isClick = true;
    

    public void OnPointerUp(PointerEventData eventData)
    
        isClick = false;
    

    // Use this for initialization
    void Start () 
		
	
	
	// Update is called once per frame
	void Update () 
		
	


  1. 写好后,把全景视频拖拽,button事件拖拽还有slider上面的拖拽
  2. 效果

3d物体播放视频

UI播放视频

  1. 创建rawimage,添加audio source组件和video player组件,然后把视频拖进去

rawimage和image的区别
image贴图类型只能是精灵图片
rawimage什么贴图都可以

  1. 要想承接播放一个视频,就要在assets创建一个Render Texture,然后拖拽到rawimage属性面板里的Texture里.
  2. 把刚创建的Render Texture也要拖拽到video player组件属性面板里的相应位置

    运行后就看到视频了,但是会发现视频并没有铺满image,就要去写脚本
  3. 把脚本挂在canvas上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class RawImageOaly : MonoBehaviour 
    public RawImage rawImage;
    private VideoPlayer videoPlayer;
	// Use this for initialization
	void Start () 
        videoPlayer = rawImage.GetComponent<VideoPlayer>();
        rawImage.texture = videoPlayer.texture;
	
	public void Play()
    
        videoPlayer.Play();
    
    public void Pause()
    
        videoPlayer.Pause();
    
    
    // Update is called once per frame
    void Update () 
        rawImage.texture = videoPlayer.texture;
    


5.写好代码后回到unity拖拽后运行,就正常播放了,然后添加两个按钮,控制视频的暂停和播放,和上面的一样就不再细述了


Unity音频控制(暂停停止播放)

AudioSource组件

在摄像头的属性面板中的Audio Listener,如果开启3D音效声音大小是相对于摄像机而言的。

所有游戏设计中都可以使用此方法

设置音乐、音效相关内容步骤:

(1)创建一个空物体Empty命名为Audio

(2)将Audio拖拽至MainCamera上,并且将Audio的坐标改为(0,0,0)

(3)拷入相关的音效

(4)将音效拖拽至Audio物体的Audio Source属性中的AudioClip上

注:勾选了Play On Awake时表明从开始就播放音乐(在没有代码干预的情况下)

Loop则是指循环的意思

(5)音量调节在属性面板的Volume中进行更改。

(6)创建脚本AudioOrange (防止名字重复)完成脚本内容

脚本代码即解析如下:

public class AudioOrange : MonoBehaviour

{
    AudioSource Orange;//获取AudioOrange组件

    public AudioClip audio1;

    public AudioClip auido2;//申请两个变量来为点击使释放不同的音效

    void Start()

    {
        Orange =  transform.GetComponent<AudioSource>();//完成组件的获取,为AudioOrange赋值

    }

当变量名相同是可以将它们重叠在一起

比如,可将代码改为:public AudioClip audio1,audio2;这样可以节省空间

(7)完成了音乐的放置,现在要将相关音效播放出来,完成代码如下:

  void Update()

    {
        if (Input.GetKeyDown(KeyCode.Q)) //在这里进行一个Input,如果按下Q键时,调用Audio11方法

        {
            Audio11();//调用第一个方法

        }

        if (Input.GetKeyDown(KeyCode.E)) //在这里进行一个Input,如果按下E键时,播放第一个声音

        {
            Audio22();//调用第一个方法

        }

    }

    void Audio11()//防止名字相冲突

    {
        Orange.clip = audio1;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

    void Audio22()//防止名字相冲突

    {
        Orange.clip = audio2;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

}

(8)取消AudioClip中的音乐和Loop以及从开始就播放(上方备注)

完整代码如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class AudioOrange : MonoBehaviour

{
    AudioSource Orange;//获取AudioOrange组件

    public AudioClip audio1;

    public AudioClip audio2;//申请两个变量来为点击使释放不同的音效

    void Start()

    {
        Orange =  transform.GetComponent<AudioSource>();//完成组件的获取,为AudioOrange赋值

    }

    void Update()

    {
        if (Input.GetKeyDown(KeyCode.Q)) //在这里进行一个Input,如果按下Q键时,调用Audio11方法

        {
            Audio11();//调用第一个方法

        }

        if (Input.GetKeyDown(KeyCode.E)) //在这里进行一个Input,如果按下E键时,播放第一个声音

        {
            Audio22();//调用第一个方法

        }

    }

    void Audio11()//防止名字相冲突

    {
        Orange.clip = audio1;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

    void Audio22()//防止名字相冲突

    {
        Orange.clip = audio2;//让Audio11这个方法等于预先设定好的Audio1

        Orange.Play();

    }

}

播放停止暂停

(1)创建一个新的脚本AudioApple,第一仍然是获取Orange组件再进行赋值。

代码如下:

public class AudioApple : MonoBehaviour

{
    AudioSource Orange;//获取AudioOrange组件

    void Start()

    {
        Orange = transform.GetComponent<AudioSource>();//对Orange组件进行赋值

    }

(2)将需要的音效重新拖拽至AudioClip中,并且勾选Play On Awake和Loop

完整代码展示:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class AudioApple : MonoBehaviour

{
    AudioSource Orange;//获取AudioOrange组件

    void Start()

    {
        Orange = transform.GetComponent<AudioSource>();//对Orange组件进行赋值

    }

    void Update()

    {
        if (Input.GetKeyDown(KeyCode.R))

        {
            Orange.Stop();//当按下R键,音乐停止,点击U时重头开始播放音乐

        }

        if (Input.GetKeyDown(KeyCode.T))

        {
            Orange.Pause();//当按下T键,音乐暂停

        }

        if (Input.GetKeyDown(KeyCode.U))

        {
            Orange.Play();//当按下U键,音乐继续播放

        }

    }

}

注明:所有音乐文档需要放到属性面板中合适的位置。
————————————————
版权声明:本文为CSDN博主「qq_42610450」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42610450/article/details/106899662

以上是关于Unity 视频控制暂停播放以及滑动条拖拽(笔记)的主要内容,如果未能解决你的问题,请参考以下文章

播放视频 unity使用rawimage控制视频,包括暂停,继续,跳过等;调整视频尺寸,解决视频无声音的情况

Unity用代码控制音乐暂停后怎么继续播放?

Unity音频控制(暂停停止播放)

Unity音频控制(暂停停止播放)

threejs--模型动画线性控制

Unity3d 按钮控制视频播放暂停