我是AR人
侠客
侠客
  • UID4982
  • 粉丝2
  • 关注0
  • 发帖数20
阅读:753回复:0

Unity3d入门教程系列:Unity3D播放音频和视频

楼主#
更多 发布于:2018-01-02 22:56
前言
在游戏开发的过程中,我们经常会用到播放音频和视频,我们今天给大家带来一种简单的播放音频和视频的方法,使用的是Unity自带的函数。本文的内容参考了宣雨松所写的《Unity3D游戏开发》一书,特此致谢。

1 播放音频
首先,Unity支持的音频格式有wav、mp3、ogg等。在场景中创建一个空物体GameObject,并为其添加AudioSource组件。将一段mp3音乐拖到project的assets文件夹下,并将该音乐文件绑定到刚才创建的空物体的AudioSource组件的AudioClip上。
编写如下脚本PlayAudio.cs:
  1. using UnityEngine;  
  2. using System.Collections;  
  3.  
  4. public class PlayAudio : MonoBehaviour {  
  5.  
  6.    public AudioSource audio;  
  7.  
  8.    public float volume;  
  9.    void Start () {  
  10.        volume = 0.2f;  
  11.    }  
  12.      
  13.    // Update is called once per frame  
  14.    void OnGUI()  
  15.    {  
  16.        if (GUI.Button(new Rect(10, 10, 200, 100), "Play"))  
  17.        {  
  18.            if (!audio.isPlaying)  
  19.            {  
  20.                audio.Play();  
  21.            }  
  22.        }  
  23.        if (GUI.Button(new Rect(10, 120, 200, 100), "Close"))  
  24.        {  
  25.            if (audio.isPlaying)  
  26.            {  
  27.                audio.Stop();  
  28.            }  
  29.        }  
  30.        if (GUI.Button(new Rect(10, 230, 200, 100), "Pause"))  
  31.        {  
  32.            if (audio.isPlaying)  
  33.            {  
  34.                audio.Pause();  
  35.            }  
  36.        }  
  37.        volume = GUI.HorizontalSlider(new Rect(250, 50, 200, 50), volume, 0, 1);  
  38.        GUI.Label(new Rect(250, 70, 300, 20), "Volume:" + (int)(volume * 100) + "%");  
  39.  
  40.        if (audio.isPlaying)  
  41.        {  
  42.            audio.volume = volume;  
  43.        }        
  44.    }  
  45. }  

将PlayAudio.cs绑定到MainCamera上,然后把刚才创建的GameObject拖动到PlayAudio脚本的Audio变量上。
运行程序,得到如下结果:



2 播放视频
Unity支持的视频格式包括mov、mpg、mpeg、mp4、avi、asf。但是有的时候,在将视频拖入Unity中的时候会出问题。所以我们建议先对视频进行格式转换。推荐工具:Theora Converter .NET,地址https://pan.baidu.com/s/1miQ8NNU。下载安装后把要播放的文件转换为ogv格式,这种格式可以直接被Unity识别。
将转化好的ogv格式的视频文件拖到Project的Assets文件夹下。在场景中创建一个Plane,并且将下面的PlayVideo.cs脚本绑定到Plane上。并且将要播的视频拖到该脚本的myMovieTexture变量位置上。
  1. using UnityEngine;  
  2. using System.Collections;  
  3.  
  4. public class PlayVideo : MonoBehaviour {  
  5.  
  6.    public MovieTexture myMovieTexture;  
  7.    void Start () {  
  8.        this.GetComponent<Renderer>().material.mainTexture = myMovieTexture;  
  9.        myMovieTexture.loop = true;  
  10.    }  
  11.      
  12.    // Update is called once per frame  
  13.    void OnGUI()  
  14.    {  
  15.        if (GUI.Button(new Rect(10, 10, 200, 100), "PlayMovie/ContinueMovie"))  
  16.        {  
  17.            if (!myMovieTexture.isPlaying)  
  18.            {  
  19.                myMovieTexture.Play();  
  20.            }  
  21.        }  
  22.        if (GUI.Button(new Rect(10, 110, 200, 100), "PauseMovie"))  
  23.        {  
  24.            if (!myMovieTexture.isPlaying)  
  25.            {  
  26.                myMovieTexture.Pause();  
  27.            }  
  28.        }  
  29.        if (GUI.Button(new Rect(10, 210, 200, 100), "CloseMovie"))  
  30.        {  
  31.            if (!myMovieTexture.isPlaying)  
  32.            {  
  33.                myMovieTexture.Stop();  
  34.            }  
  35.        }  
  36.    }  
  37. }  
运行效果:

欢迎分享

游客

返回顶部