• Unity3D 游戏引擎之详解游戏开发音频的播放


    雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/550

     
     
     
     
     

           游戏音频的播放在任何游戏中都占据非常重要的地位,音频的播放还可以分为两种,一种为游戏音乐,另一种为游戏音效。前者适用于较长的音乐,如游戏背景音乐。第二种试用与比较短的游戏音乐,如开枪,打怪 时“砰砰”一瞬间播放的游戏音效。今天MOMO将用下面的例子带盆友们去剖析Unity3D游戏音乐与音效的播放。

     

     

    Unity3D游戏引擎一共支持4个音乐格式的文件

     

    .AIFF  适用于较短的音乐文件可用作游戏打斗音效

    .WAV  适用于较短的音乐文件可用作游戏打斗音效

    .MP3  适用于较长的音乐文件可用作游戏背景音乐

    .OGG  适用于较长的音乐文件可用作游戏背景音乐

         

     

    在场景中创建一个空的游戏对象。

    GameObject -> CreateEmpty  创建成功后我命名为audio。

    给audio添加一个AudioSource属性,这个属性非常的重要,Unity播放音乐主要就是要靠这个东西。

     

    Component -> Audio - > Audio Source。

     

     

     

     
     
     
     
     

    找一个音乐文件,我这里使用了一个.mp3音乐文件,我命名为0.mp3 如下图所示将它拖动到右侧Audio Clip处。

     

     

     

     

     

     

    我们发现 Audio Source 有很多设置的属性,那么MOMO将一些比较重要的属性诺列出来。

     

    AudioClip :声音片段,还可以在代码中去动态的截取音乐文件。

    Mute : 是否静音

    Bypass Effects: 是否打开音频特效

    Play On Awake: 开机自动播放

    Loop:循环播放

    Volume: 声音大小,取值范围0.0 到 1.0

    Pitch:播放速度,取值范围在 -3 到 3 之间 设置1 为正常播放,小于1 为减慢播放 大于1为加速播放。

     

     

     

     

    创建一个脚本我命名为audio.cs 用来音乐的播放。本章将实现3个按钮 点击实现 播放音乐、 停止音乐、 暂停音乐 ,与一个横向拖动条通过手指的拖动实现动态修改音乐声音。

     

    audio.cs

    1. using UnityEngine; 
    2. using System.Collections; 
    3.  
    4. publicclass audio : MonoBehaviour { 
    5.  
    6.     //音乐文件 
    7.     public AudioSource music;    
    8.     //音量 
    9.     publicfloat musicVolume;    
    10.      
    11.     void Start() { 
    12.          //设置默认音量 
    13.          musicVolume = 0.5F;     
    14.     } 
    15.     void OnGUI() { 
    16.          
    17.         //播放音乐按钮 
    18.         if (GUI.Button(new Rect(10, 10, 100, 50), "Play music"))  { 
    19.              
    20.             //没有播放中 
    21.             if (!music.isPlaying){ 
    22.                 //播放音乐 
    23.                 music.Play(); 
    24.             } 
    25.              
    26.         } 
    27.          
    28.         //关闭音乐按钮 
    29.         if (GUI.Button(new Rect(10, 60, 100, 50), "Stop music"))  { 
    30.              
    31.             if (music.isPlaying){ 
    32.                 //关闭音乐 
    33.                 music.Stop(); 
    34.             } 
    35.         } 
    36.         //暂停音乐 
    37.         if (GUI.Button(new Rect(10, 110, 100, 50), "Pause music"))  { 
    38.             if (music.isPlaying){ 
    39.                 //暂停音乐 
    40.                 //这里说一下音乐暂停以后 
    41.                 //点击播放音乐为继续播放 
    42.                 //而停止以后在点击播放音乐 
    43.                 //则为从新播放 
    44.                 //这就是暂停与停止的区别 
    45.                 music.Pause(); 
    46.             } 
    47.         } 
    48.  
    49.         //创建一个横向滑动条用于动态修改音乐音量 
    50.         //第一个参数 滑动条范围 
    51.         //第二个参数 初始滑块位置 
    52.         //第三个参数 起点 
    53.         //第四个参数 终点 
    54.         musicVolume = GUI.HorizontalSlider (new Rect(160, 10, 100, 50), musicVolume, 0.0F, 1.0F); 
    55.      
    56.         //将音量的百分比打印出来 
    57.         GUI.Label(new Rect(160, 50, 300, 20), "Music Volueme is " + (int)(musicVolume * 100) + "%"); 
    58.          
    59.         if (music.isPlaying){ 
    60.             //音乐播放中设置音乐音量 取值范围 0.0F到 1.0  
    61.             music.volume = musicVolume; 
    62.         } 
    63.     } 
    using UnityEngine;
    using System.Collections;
    
    public class audio : MonoBehaviour {
    
        //音乐文件
        public AudioSource music;	
        //音量
        public float musicVolume;	
        
        void Start() {
       		 //设置默认音量
       		 musicVolume = 0.5F;	
        }
    	void OnGUI() {
    		
    		//播放音乐按钮
    		if (GUI.Button(new Rect(10, 10, 100, 50), "Play music"))  {
    			
    			//没有播放中
    			if (!music.isPlaying){
    				//播放音乐
    				music.Play();
    			}
    			
    		}
    		
    		//关闭音乐按钮
    		if (GUI.Button(new Rect(10, 60, 100, 50), "Stop music"))  {
    			
    			if (music.isPlaying){
    				//关闭音乐
    				music.Stop();
    			}
    		}
    		//暂停音乐
    		if (GUI.Button(new Rect(10, 110, 100, 50), "Pause music"))  {
    			if (music.isPlaying){
    				//暂停音乐
    				//这里说一下音乐暂停以后
    				//点击播放音乐为继续播放
    				//而停止以后在点击播放音乐
    				//则为从新播放
    				//这就是暂停与停止的区别
    				music.Pause();
    			}
    		}
    
    		//创建一个横向滑动条用于动态修改音乐音量
    		//第一个参数 滑动条范围
    		//第二个参数 初始滑块位置
    		//第三个参数 起点
    		//第四个参数 终点
    		musicVolume = GUI.HorizontalSlider (new Rect(160, 10, 100, 50), musicVolume, 0.0F, 1.0F);
    	
    		//将音量的百分比打印出来
    		GUI.Label(new Rect(160, 50, 300, 20), "Music Volueme is " + (int)(musicVolume * 100) + "%");
    		
    		if (music.isPlaying){
    			//音乐播放中设置音乐音量 取值范围 0.0F到 1.0 
    			music.volume = musicVolume;
    		}
    	}
    }

     

     

    将audio.cs 绑定在摄像头上,将audio游戏对象拖动赋值给Music 这个AudioSource这个对象。这里强调一下AudioListenr ,它音频监听器,用来监听音乐文件的播放。这是一个重要的属性,一定要勾选,只有勾选后才可以进行音乐的播放。

     

     

     

     

    build and run 运行我们这个游戏Demo,一切功能完美实现,哇咔咔~

     

     

     

     

    最后欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,大家一起学习一起进步,哇咔咔~~~ 附上Unity3D工程的下载地址,Xcode项目我就不上传了,须要的自己导出。今天心里有点不高兴! 5555555555。就这样晚安~

     

    下载地址:http://www.xuanyusong.com/archives/550

  • 相关阅读:
    【iOS】找工作的面试题集锦
    APP项目优化--启动速度优化篇
    【Swift】Timer定时器到底准不准确?
    leetcode刷题 495~
    leetcode刷题 464~
    leetcode刷题 441~
    leetcode刷题 420~
    leetcode刷题 396~
    leetcode刷题 373~
    leetcode刷题 307~
  • 原文地址:https://www.cnblogs.com/yanghaihao/p/2799016.html
Copyright © 2020-2023  润新知