您现在的位置是:首页 >技术交流 >UnityVR--组件9--VideoPlayer&AudioSource网站首页技术交流

UnityVR--组件9--VideoPlayer&AudioSource

唐小墨同学 2024-10-03 12:01:04
简介UnityVR--组件9--VideoPlayer&AudioSource

目录

前言

视频组件VideoPlayer参数解释

RenderMode渲染方式

VideoPlayer类中的API

音频组件AudioSource参数解释

AudioSource类中的常见API&简单应用


前言

  在之前的VR场景中已经使用过VideoPlayer播放视频(Unity.UI的交互(6)-播放视频),不过在VR中设置是有些不同的,这里更详细地说明一下VideoPlayer组件的设置与使用,以及VideoPlayer类中常用的API。

  音频组件AudioSource在场景中用于播放声音片段,可通过音频监听器或者混音器播放。

视频组件VideoPlayer参数解释

  其中: Source——视频源,设置为VideoClip就可以选择Assets文件夹内的视频文件,也可以设置为URL,播放网络上的视频(需要用一些工具去获取视频源地址); 

  Audio Output Mode——声音的播放是通过视频,或是其他声音源

RenderMode渲染方式

  常用的是前4种:

  1. Camera Far Plane——基于摄像机的渲染,渲染在摄像机的远平面上,这时候视频在最远的地方播放:

  2. Camera Near Plane——基于摄像机的渲染,渲染在摄像机的近平面上,这时候视频会将所有画面都覆盖了:

选择以上两种时,都需要选择相应的摄像机。

  3. RenderTexture——将视频画面保存在RenderTexture上,用来做基于UGUI的播放器(就是使用UI组件播放),详见在VR中的应用播放视频,这里不再赘述;

  4. Material Override——将视频画面复制给所选Render的Material,比如可以附着在场景内的任何物体上,建立一个球Sphere,将球拖到Renderer内,它就在球上播放:

  

VideoPlayer类中的API

  在使用VideoPlayer类之前,需要引入命名空间UnityEngine.Video,代码中可以通过getCompoment<VideoPlayer>()获取组件,并修改其参数:

  clip——视频片段

  frameCount——视频的总帧数

  frameRate——视频的帧率

  time——视频当前播放的时间

  Play()——播放

  Paurse()——暂停

音频组件AudioSource参数解释

  (参照Unity手册:音频源 - Unity 手册 (unity3d.com)

   

  说明:1. 声音片段AudioClip支持mp3、ogg、wav、aiff等格式声音文件,mp3和ogg格式适合较长音频;

  2. Output可以输出到AudioListener音频监听器,相当于代替人的耳朵。每个场景中只能有一个AudioListener,一般加载在主摄像机MainCamera上,因此如果加入其他的Camera时,需要将AudioListener移除。

  3. AudioSource可以挂在场上任何地方,当然作为项目管理来说,需要进行规划和同一管理。

AudioSource类中的常见API&简单应用

void Play()  //播放音频源中的音效
void Pause() //播放暂定
void UnPause() //继续播放
void PlayOneShot(AudioClip clip) //播放音频剪辑
void PlayClipAtPoint(AudioClip clip, Vector3 position)
//在某位置上播放音频剪辑

   简单使用时,可以设置如下,在AudioSource中设置一个声音片段:

  写一个简单的测试脚本,当按下T按键时,播放该音频:

public class TestAudio : MonoBehaviour
{
    // 播放音频
    private AudioSource m_AudioSource;
    void Start()
    {
        m_AudioSource= GetComponent<AudioSource>();
    }

    void Update()
    {
        if(Input.GetKeyDown(KeyCode.T))
        {
            m_AudioSource.Play();
        }
    }
}

 在一个工程项目中,会有很多的声音文件,播放的时间和条件也不相同,因此在实际制作中,需要集中管理,详见(管理阶层-AudioManager)

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。