一、添加背景音樂
1. 創建空的游戲物體,名為BackgroundMusic
2. 為音頻播放器添加音頻源(Audio Source)組件
3. 將背景音樂音頻賦值到AudioClip(紅色)
4. 設置循環播放(藍色)
二、添加草莓拾取音效
1. 為角色添加音頻源組件
2. 取消勾選Play On Awake選項(即取消游戲開始時自動播放)
3. 編輯角色腳本
? ? ? ? (1)創建音頻源對象
public class Ruby : MonoBehaviour
{// 創建音頻源對象public AudioSource audioSource;
}
? ? ? ? (2)編寫playSound方法播放音效
public class Ruby : MonoBehaviour
{// 創建音頻源對象public AudioSource audioSource;// 播放音效public void playSound(AudioClip audioClip){audioSource.PlayOneShot(audioClip);}}
? ? ? ? PlayOneShot()方法為只播放一次音效
4. 編輯草莓腳本
? ? ? ? (1)創建拾取音效
public class Strawberry : MonoBehaviour
{// 創建拾取音效public AudioClip pickUpSound;
}
? ? ? ? (2)在角色與草莓碰撞的方法中添加播放拾取音效
public class Strawberry : MonoBehaviour
{// 創建拾取音效public AudioClip pickUpSound;// 當角色與草莓發生碰撞時private void OnTriggerEnter2D(Collider2D collision){Ruby ruby = collision.GetComponent<Ruby>();if(ruby != null) {if(ruby.healthPoint < ruby.maxHealthPoint) {// 播放拾取音效ruby.playSound(pickUpSound);}}}}
5. 將拾取音效賦值到pickUpSound
三、添加角色受傷音效
1. 編輯角色腳本
? ? ? ? (1)創建Ruby受傷音效
public class Ruby : MonoBehaviour
{// 創建ruby受傷音效public AudioClip rubyHitSound;
}
? ? ? ? (2)編寫changeHealthPoint()方法,當生命改變量小于0(即受到傷害)時,播放角色受傷音效
public class Ruby : MonoBehaviour
{// 創建ruby受傷音效public AudioClip rubyHitSound;// Ruby改變生命值public void changeHealthPoint(int value) {if(value < 0) {playSound(rubyHitSound);}}
}
2. 將角色受傷音效賦值到rubyHitSound
四、添加角色射擊音效
1. 編輯角色腳本
? ? ? ? (1)創建Ruby射擊音效
public class Ruby : MonoBehaviour
{// 創建ruby射擊音效public AudioClip rubyShootSound;
}
? ? ? ? (2)編寫shoot方法,播放ruby射擊音效
public class Ruby : MonoBehaviour
{// 創建ruby射擊音效public AudioClip rubyShootSound;// Ruby發射子彈private void shoot(){playSound(rubyShootSound);}
}
2. 將角色射擊音效賦值到rubyShootSound
五、添加角色走路音效
1. 編輯角色腳本
? ? ? ? (1)創建行走音頻源對象和ruby移動音效
public class Ruby : MonoBehaviour
{// 創建行走音頻源對象public AudioSource walkAudioSource;// 創建ruby移動音效public AudioClip rubyWalkSound;
}
? ? ? ? (2)用walkAudioSource接收AudioSource組件
public class Ruby : MonoBehaviour
{// 創建行走音頻源對象public AudioSource walkAudioSource;// 創建ruby移動音效public AudioClip rubyWalkSound;void Start() {// 用walkAudioSource接收AudioSource組件walkAudioSource = GetComponent<AudioSource>();}
}
? ? ? ? (3)?當Ruby移動且不播放移動音效時,播放角色移動音效
public class Ruby : MonoBehaviour
{// 創建行走音頻源對象public AudioSource walkAudioSource;// 創建ruby移動音效public AudioClip rubyWalkSound;void Start() {// 用walkAudioSource接收AudioSource組件walkAudioSource = GetComponent<AudioSource>();}// 當Ruby移動時if(!Mathf.Approximately(move.x, 0) || !Mathf.Approximately(move.y, 0)) {if(!walkAudioSource.isPlaying) {walkAudioSource.clip = rubyWalkSound;walkAudioSource.Play();}}
}
? ? ? ? (4)當Ruby停止移動時,停止播放移動音效
public class Ruby : MonoBehaviour
{// 創建行走音頻源對象public AudioSource walkAudioSource;// 創建ruby移動音效public AudioClip rubyWalkSound;void Start() {// 用walkAudioSource接收AudioSource組件walkAudioSource = GetComponent<AudioSource>();}// 當Ruby移動時if(!Mathf.Approximately(move.x, 0) || !Mathf.Approximately(move.y, 0)) {if(!walkAudioSource.isPlaying) {walkAudioSource.clip = rubyWalkSound;walkAudioSource.Play();}} else { // 當Ruby停止移動時walkAudioSource.Stop();}
}
2. 把兩個音頻源組件賦值到audioSource、walkAudioSource
3.?將角色行走音效賦值到rubyWalkSound中
六、添加機器人走路音效
1. 為機器人添加Audio Source組件
2. 將機器人走路音效賦值到AudioClip中
3.?取消勾選PlayOnAwake屬性
七、添加機器人受傷音效
1. 創建機器人受傷音效數組
public class Enemy : MonoBehaviour
{// 創建機器人受傷音效數組public AudioClip[] enemyHitSounds;
}
2. 新建一個隨機數,為0~機器人受傷音效數組長度之間的隨機值,然后隨機播放機器人受傷特效數組中的音效
public class Enemy : MonoBehaviour
{// 創建機器人受傷音效數組public AudioClip[] enemyHitSounds;// 敵人改變生命值public async void changeHealthPoint(int value){if(value < 0) {// 新建一個隨機數,為0~機器人受傷音效數組長度之間的隨機值int randomNum = Random.Range(0, enemyHitSounds.Length);// 隨機播放機器人受傷特效數組中的音效audioSource.PlayOneShot(enemyHitSounds[randomNum], 40);}}
}
?3. 將兩個機器人受傷音效賦值到Enemy Hit Sounds數組
八、添加機器人修理完成音效
1. 創建機器人修理完成音效
public class Enemy : MonoBehaviour
{// 創建機器人修理完成音效public AudioClip enemyFixSound;
}
2. 播放修復完成特效
public class Enemy : MonoBehaviour
{// 創建機器人修復完成音效public AudioClip enemyFixSound;// 敵人修復完成public void enemyFixed(){// 播放修復完成音效,100為音效音量放大倍數audioSource.PlayOneShot(enemyFixSound, 25);}
}
3. 延遲播放修復完成特效
? ? ? ? (1)新建playFixSound方法,將播放修復完成音效的語句移動到playFixSound方法中
public class Enemy : MonoBehaviour
{// 創建機器人修復完成音效public AudioClip enemyFixSound;// 敵人修復完成public void enemyFixed(){}// 播放敵人修復完成音效private void playFixSound(){audioSource.PlayOneShot(enemyFixSound, 25);}
}
? ? ? ? (2)使用Invoke方法延遲調用playFixSound方法?
public class Enemy : MonoBehaviour
{// 創建機器人修復完成音效public AudioClip enemyFixSound;// 敵人修復完成public void enemyFixed(){Invoke("playFixSound", 0.2f);}// 播放敵人修復完成音效private void playFixSound(){audioSource.PlayOneShot(enemyFixSound, 25);}
}
? ? ? ? (3)?新建stopAudioSourcePlay方法,將stop語句移動到其中,在playFixSound方法中使用Invoke方法延遲調用stopAudioSourcePlay方法
public class Enemy : MonoBehaviour
{// 創建機器人修復完成音效public AudioClip enemyFixSound;// 敵人修復完成public void enemyFixed(){Invoke("playFixSound", 0.2f);}// 播放敵人修復完成音效private void playFixSound(){audioSource.PlayOneShot(enemyFixSound, 25);Invoke("stopAudioSourcePlay", 1.0f);}// 停用音頻源組件private void stopAudioSourcePlay(){audioSource.Stop();}
}
3. 將機器人修復完成音效賦值到Enemy Fix Sound
? ? ? ? 本章完。感謝閱讀!?