Unity性能優化—聲音優化

Unity性能優化—聲音優化

發表於 2016-9-28 11:43:03 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


本帖最後由 manew_JR 於 2016-9-28 11:48 編輯

目標給你一個關於在Unity遊戲中通過優化聲音提高性能的建議   
爲什麼我的遊戲加載時間那麼長?
爲什麼播放遊戲聲音時延遲那麼長?
爲什麼聲音文件佔那麼多的內存?
爲什麼我一播放聲音遊戲就那麼卡?
難道是因爲我在開發時對聲音的處理有問題
也許你在加載聲音時都會出現以上的問題衝到你的腦門上!!
好吧,我知道這種感覺!!聲音管理起來很棘手;當我開發第一個遊戲的時候我也有遇到過相同的問題。我在網上任何地方都找不到原因和解決方案。所以我決定發佈這篇文章,希望能幫助到你。
如果你是Unity初學者,首先需要弄清楚聲音管理如何在Unity中工作的。
爲此,你可以參照下面的鏈接,去了解一下Audio Clips、Audio Listeners、AudioSources的基本操作:https://unity3d.com/learn/tutorials/modules/beginner/audio/audio-sources-and-listeners
在Unity中的聲音管理是非常簡單和基本的,它是如何影響我的遊戲呢?
   
· 是的,非常簡單哦,但是它(聲音管理)卻能讓你的遊戲陷入困境!
· 讓我們通過一個簡單的案例去理解它吧。
   
步驟一:設置場景,如下所示:
創建一個Canvas,給它添加兩個Button控件(一個名爲Music-Button,另一個爲Sound-Button)。

在Main Camera下創建一個空物體命名爲AudioSources,且又在它下面再創建兩個空物體分別命名爲“BackgroundMusic”和“SFX-Sounds”。

然後創建一個空物體(Empty GameObject),並命名爲“SoundManager”。(名字隨你來)

在hierarchy中層次關係如下所示:

1.png (50.3 KB, 下載次數: 3)

下載附件  保存到相冊

2016-9-28 11:34 上傳



我的屏幕設置很簡單,如下所示:

QQ截圖20160928113506.png (23.21 KB, 下載次數: 3)

下載附件  保存到相冊

2016-9-28 11:34 上傳



步驟二:創建一個腳本,如下所示:


[C#] 純文本查看 複製代碼
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using UnityEngine;
 
public class SoundManager : MonoBehaviour
{
   #region BACKGROUND_MUSIC
 
   public AudioClip[] backgroundMusicClipsArray;
   public AudioSource backgroundMusicSource;
 
   #endregion
 
   #region SFX_SOUNDS
 
   public AudioClip[] SFXSounds;
   public AudioSource SFXAudioSource;
 
   #endregion
 
   #region PUBLIC_METHODS
 
   public void PlayRandomMusic()
   {
       backgroundMusicSource.clip = backgroundMusicClipsArray[Random.Range(0, backgroundMusicClipsArray.Length)];
       backgroundMusicSource.Play();
   }
 
   public void PlayRandomSFXSounds()
   {
       SFXAudioSource.PlayOneShot(SFXSounds[Random.Range(0, SFXSounds.Length)]);
   }
 
   #endregion
}

在這裏,對於背景音樂和SFX聲音(SFX聲音就是一點短的音頻剪輯,如跳躍的聲音(Biu)等)我聲明瞭兩個Audio Clip的數組,名字分別爲:backgroundMusicClipsArray和 SFXSounds(分別用來存放對應的聲音資源)。
也聲明瞭兩個AudioSource類型的成員變量(就是對應的“BackgroundMusic”和“SFX-Sounds”,記得把他們拖到腳本上哦)。
這裏有兩個名爲PlayRandomMusic() 和PlayRandomSFXSounds()的方法,用於在我們調用該方法時播放隨機音樂/聲音。然後爲對應的Button添加對應的響應事件。把AudioClips的設置全設爲默認即可。
現在測試它在編輯器是否能正常工作。
步驟三:把發佈平臺設置爲安卓平臺
生成 Build 的時候記得把 Development BuildAuto Connect Profiler 勾選上,如下圖所示:

0 (2).webp.jpg (54.78 KB, 下載次數: 2)

下載附件  保存到相冊

2016-9-28 11:36 上傳



在你手機上開始遊戲,你有發現到什麼奇怪的事情嗎?

加載遊戲花了多少時間?

對於我,從Unity的默認界面加載到遊戲界面我大約花了10-15秒,我的遊戲中大概有15個背景音樂和40個SFX聲音片段。
現在,查看一下Profiler,在Profiler中找到Audio模塊。如下圖所示(下面第一張圖是我自己弄得,怕大夥們找不到Audio模塊。。)

0.jpg (205.28 KB, 下載次數: 3)

下載附件  保存到相冊

2016-9-28 11:37 上傳

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章