Unity 视频控制暂停播放以及滑动条拖拽(笔记)
Posted X-q-X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 视频控制暂停播放以及滑动条拖拽(笔记)相关的知识,希望对你有一定的参考价值。
文章目录
3d物体播放视频
-
创建一个cube,在cube下创建canvas,然后调到世界,并调整位置和大小,
-
cube上添加audio source组件和video player组件
-
在创建两个image,image下面创建text文本,分别为暂停和播放,然后再image上添加button组件
-
创建脚本,写代码
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;
- 再创建一个脚本挂在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 ()
- 写好后,把全景视频拖拽,button事件拖拽还有slider上面的拖拽
- 效果
3d物体播放视频
UI播放视频
- 创建rawimage,添加audio source组件和video player组件,然后把视频拖进去
rawimage和image的区别
image贴图类型只能是精灵图片
rawimage什么贴图都可以
- 要想承接播放一个视频,就要在assets创建一个Render Texture,然后拖拽到rawimage属性面板里的Texture里.
- 把刚创建的Render Texture也要拖拽到video player组件属性面板里的相应位置
运行后就看到视频了,但是会发现视频并没有铺满image,就要去写脚本 - 把脚本挂在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 视频控制暂停播放以及滑动条拖拽(笔记)的主要内容,如果未能解决你的问题,请参考以下文章