Đối với bất kỳ game nào, âm thanh là một trong những yếu tố không thể thiếu, âm thanh như chất xúc tác nhằm kích thích các giác quan của người chơi giúp cho game trở nên thu hút và hấp dẫn hơn. Bài viết này sẽ hướng dẫn cách để phát âm thanh trong Unity.
Audio Source Component
Audio Source là 1 built-in component được Unity xây dựng sẵn để hỗ trợ phát các file âm thanh trong game.
Để sử dụng Audio Source, chọn Add Component → Audio → Audio Source, các thuộc tính của Audio Source được hiển thị trong hình sau:

Các tính năng chính
- AudioClip: file âm thanh sẽ được gán vào
AudioClip
để xử lý và phát âm thanh ra các thiết bị output. - Play On Awake: tùy chọn cho phép âm thanh được phát ngay khi
GameObject
được kích hoạt. - Loop: tùy chọn lặp lại liên tục âm thanh sau khi đã phát hết.
- Mute: tùy chọn ngắt kết nối với các thiết bị output âm thanh. Âm thanh sẽ vẫn chạy bình thường nhưng sẽ không được phát ra.
Ngoài ra còn một số chức năng và tuỳ chọn không được hiển thị. Xử lý các tính năng cần thiết này với C# Script.
Các định dạng hỗ trợ
Theo thông tin từ trang chủ chính thức của Unity thì các định dạng âm thanh được hỗ trợ được thể hiện trong bảng sau:
Format | Extension |
---|---|
MPEG Layer 3 | .mp3 |
OGG Vorbis | .ogg |
Microsoft Wave | .wav |
Audio Interchange File Format | .aiff / .aif |
Ultimate Soundtracker Module | .mod |
Impulse Tracker Modele | .it |
Scream Tracker Module | .s3m |
Fast Tracker 2 Module | .xm |
Xử lý và phát âm thanh với Script
Đầu tiên, để thao tác được với Audio Source, sử dụng dòng code sau:
m_audio = GetComponent<AudioSource>();
Với C# Script, có thể thực hiện được mọi thao tác với AudioSource, nhưng bài viết sẽ chỉ hướng dẫn các thao tác đơn giản và phổ biến.
Thay đổi file âm thanh
File âm thanh sẽ được lưu trữ dưới biến clip. Do đó để thay đổi file âm thanh khác, gán file đó vào biến này. Thao tác như sau:
m_audio.clip = yourAudioFile;
yourAudioFile
phải được load lên bộ nhớ trước khi thực hiện dòng code trên.
Play - Pause - Stop
3 hàm này dùng để điều khiển bật hoặc tắt nhạc theo nhu cầu của lập trình viên, các hàm này sẽ thay đổi giá trị của biến isPlaying
để thể hiện được trạng thái của AudioSource
.
m_audio.Play(); m_audio.Pause(); m_audio.Stop();
Hàm Pause
sẽ dừng chơi nhạc và lưu trữ trạng thái hiện tại để có thể resume, trong khi hàm Stop
sẽ dừng hoàn toàn và di chuyển về vị trí đầu của file âm thanh trong bộ nhớ.
isPlaying
Biến này có tác dụng như một cờ đánh dấu để AudioSource có thể kiểm tra và bật hoặc tắt âm thanh theo ý lập trình viên. Để kiểm tra giá trị của biến, có thể sử dụng hàm Debug.Log
như sau:
Debug.Log(m_audio.isPlaying);
mute
Dùng để bật hoặc tắt âm thanh phát ra các thiết bị output, thao tác tương tự như hướng dẫn ở trên.