今天实现的内容:
枪械的音效数据:
采用了和脚步声类似的方法,也就是使用ScriptableObject。
[CreateAssetMenu(menuName = "FPS/Firearms Audio Data")]
public class FirearmsAudioData : ScriptableObject
{
// 开火的音效
public AudioClip ShootingAudio;
// 弹仓还有子弹时的换弹音效
public AudioClip ReloadLeft;
// 弹仓没有子弹时的换弹音效
public AudioClip ReloadOutOfAmmo;
}
在资源文件夹中中创建一个FirearmsAudioData,将需要的AudioClip放上去。
在Firearms类中引用这个音效data。接下来就是具体实现。
// 音效
public FirearmsAudioData firearmsShootingAudioData;
枪械的开火音效的实现:
首先说明一下,为了开火和换弹的声音播放不冲突,我们用了两个AudioSource,目前直接挂载到脚本所在gameobject上。
引用AudioSource。
public AudioSource firearmsShootingAudioSource;
在AssaultRifle类的Shooting方法中直接播放片段就可以了。
// 播放开火音效
firearmsShootingAudioSource.clip = firearmsShootingAudioData.ShootingAudio;
firearmsShootingAudioSource.Play();
枪械的换弹音效的实现:
由于换弹用了两个不同的方式,所以要使用两个不同的音效,这里要先判断一下。
// 当前需要播放哪个音效?
firearmsReloadingAudioSource.clip = (m_isBulletLeft ?
firearmsShootingAudioData.ReloadLeft : firearmsShootingAudioData.ReloadOutOfAmmo);
firearmsReloadingAudioSource.Play();
BUG以及缺陷:
暂时无
值得注意的:
以后还会有枪械相关的新音效加进去的。