zoukankan      html  css  js  c++  java
  • 【Unity3D入门教程】Unity3D播放音频和视频

    前言

    在游戏开发的过程中,我们经常会用到播放音频和视频,我们今天给大家带来一种简单的播放音频和视频的方法,使用的是Unity自带的函数。本文的内容参考了宣雨松所写的《Unity3D游戏开发》一书,特此致谢。

     

    1 播放音频

    首先,Unity支持的音频格式有wav、mp3、ogg等。在场景中创建一个空物体GameObject,并为其添加AudioSource组件。将一段mp3音乐拖到project的assets文件夹下,并将该音乐文件绑定到刚才创建的空物体的AudioSource组件的AudioClip上。

    编写如下脚本PlayAudio.cs:

    using UnityEngine;
    using System.Collections;
    
    public class PlayAudio : MonoBehaviour {
    
        public AudioSource audio;
    
        public float volume;
    	void Start () {
            volume = 0.2f;
    	}
    	
    	// Update is called once per frame
        void OnGUI()
        {
            if (GUI.Button(new Rect(10, 10, 200, 100), "Play"))
            {
                if (!audio.isPlaying)
                {
                    audio.Play();
                }
            }
            if (GUI.Button(new Rect(10, 120, 200, 100), "Close"))
            {
                if (audio.isPlaying)
                {
                    audio.Stop();
                }
            }
            if (GUI.Button(new Rect(10, 230, 200, 100), "Pause"))
            {
                if (audio.isPlaying)
                {
                    audio.Pause();
                }
            }
            volume = GUI.HorizontalSlider(new Rect(250, 50, 200, 50), volume, 0, 1);
            GUI.Label(new Rect(250, 70, 300, 20), "Volume:" + (int)(volume * 100) + "%");
    
            if (audio.isPlaying)
            {
                audio.volume = volume;
            }       
        }
    }


    将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变量位置上。

    using UnityEngine;
    using System.Collections;
    
    public class PlayVideo : MonoBehaviour {
    
        public MovieTexture myMovieTexture;
    	void Start () {
            this.GetComponent<Renderer>().material.mainTexture = myMovieTexture;
            myMovieTexture.loop = true;
    	}
    	
    	// Update is called once per frame
        void OnGUI()
        {
            if (GUI.Button(new Rect(10, 10, 200, 100), "PlayMovie/ContinueMovie"))
            {
                if (!myMovieTexture.isPlaying)
                {
                    myMovieTexture.Play();
                }
            }
            if (GUI.Button(new Rect(10, 110, 200, 100), "PauseMovie"))
            {
                if (!myMovieTexture.isPlaying)
                {
                    myMovieTexture.Pause();
                }
            }
            if (GUI.Button(new Rect(10, 210, 200, 100), "CloseMovie"))
            {
                if (!myMovieTexture.isPlaying)
                {
                    myMovieTexture.Stop();
                }
            }
        }
    }


    运行效果:



  • 相关阅读:
    Python基础5_字典,集合
    Python基础3_基本数据类型,字符串,for循环
    Python基础2_while循环,格式化输出,基本运算符,编码,
    Python基础1_初识,注释,变量,if语句
    编写高质量代码[读书笔记]
    php地方天气
    [head first php&mysql]读书笔记-基本的安全信息(第五章)
    上传本地图片
    检测IE
    underscore源码解析(实用的功能)
  • 原文地址:https://www.cnblogs.com/yanhuiqingkong/p/7770063.html
Copyright © 2011-2022 走看看