新手第一次分享代码,希望能有人一起讨论改进,让我从中也得到些经验
由于3.1改动了很多音频相关的api,导致音频的功能于以往不同,而这一点甚至没有体现在任何文档中!!!结果我只能翻了很久的源码才看出一点端倪:现在AudioClip仅仅代表音频资源,而AudioSource则包含AudioPlayer用于实现真正的音频播放。在此更新中,原来的end事件也无法使用了。虽然音频有current属性可以发明查询播放时间,但是在播放结束后current会直接回复至0也导致实现效果不太理想。我用一个AudioDecrator继承AudioSource来使用内部的onEnded事件接口。
整个声音系统功能在3.1只有直接的播放,在游戏工程中音频控制就变的比较复杂,都需要自己手动实现。我写了一个AudioChannel抽象类并继承实现了ExclusiveChannel,LoopChannel,MixChannel,QueueChannel这4种音频控制的模式,简单来说只需要在调用实例的play(AudioDecrator)方法即可让其依不同行为播放音频。
audioChannel.zip (6.9 KB)
