1. 示例

unity中播放声音涉及到两个组件。AudioSource和AudioClip。AudioSource可以理解为播放器,AudioClip可以理解为音频片段文件。AudioSource可以通过.clip属性切换音频片段。

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private int currentHealth;     
    private AudioSource shootingSound; 
    void Start()
    {
        currentHealth = maxHealth;

        // 添加 AudioSource 组件
        shootingSound = gameObject.AddComponent<AudioSource>();
        // 加载射击音频文件
        AudioClip shootingClip = Resources.Load<AudioClip>("audios/gun");
        if (shootingClip != null)
        {
            shootingSound.clip = shootingClip;
            shootingSound.Play();
        }
        else
        {
            Debug.LogError("Failed to load shooting audio clip!");
        }
    }
}

2. 详解代码片段

PlayerController 类的 Start 方法,主要负责初始化玩家飞船的一些属性,包括:

  1. AudioSource 组件的添加:
// 添加 AudioSource 组件
shootingSound = gameObject.AddComponent<AudioSource>();

这一行代码在玩家飞船对象上添加了一个 AudioSource 组件。AudioSource 是用于播放音频的组件,可以控制音频的播放、暂停、音量等属性。

  1. 加载射击音频文件:
// 加载射击音频文件 AudioClip 
shootingClip = Resources.Load<AudioClip>

这一行代码尝试从 "Resources" 文件夹中加载名为 "audios/gun" 的音频文件。Resources.Load<AudioClip> 是 Unity 中用于从 "Resources" 文件夹加载资源的方法。加载成功后,将音频文件赋值给 shootingSound.clip 属性。

  1. 播放射击音频:
// 加载射击音频文件
AudioClip shootingClip = Resources.Load<AudioClip>("audios/gun");

这部分代码首先检查加载的音频文件是否为空,如果不为空,将加载的音频文件设置为 shootingSound.clip,然后通过 shootingSound.Play() 播放射击音效。

  1. 错误处理:
if (shootingClip != null)
{
    shootingSound.clip = shootingClip;
    shootingSound.Play();
}

如果加载音频文件失败,输出错误信息到 Unity 控制台,以便开发者进行调试。

3. AudioSource方法大全

AudioSource 是 Unity 中用于播放音频的组件,提供了许多常用的方法和属性。以下是一些 AudioSource 常用的方法:

  1. 播放音频:
  • Play(): 开始播放音频。
  • PlayDelayed(float delay): 延迟一定时间后开始播放音频。
  1. 暂停和继续播放:
  • Pause(): 暂停音频的播放。
  • UnPause(): 继续之前暂停的音频播放。
  1. 停止音频播放:
  • Stop(): 立即停止音频播放。
  1. 音量控制:
  • volume: 获取或设置音频的音量(0.0 到 1.0 之间的值)。
  1. 循环播放:
  • loop: 获取或设置音频是否循环播放。
  1. Pitch(音调)控制:
  • pitch: 获取或设置音频的音调(调整音频的播放速度)。
  1. 空间音频(3D音频):
  • spatialBlend: 获取或设置音频的空间混合度,用于控制音频在3D空间中的效果。
  1. 时间控制:
  • time: 获取或设置音频的当前播放时间。
  • timeSamples: 获取或设置音频的当前播放时间(以采样为单位)。
  1. 播放速度控制:
  • pitch: 获取或设置音频的播放速度。
  • time: 获取或设置音频的当前播放时间。
  1. 循环区域播放:
  • SetScheduledStartTime(double time): 在指定时间之后开始音频的播放。
  • SetScheduledEndTime(double time): 在指定时间之后结束音频的播放。