Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
自定义 AudioStream¶
前言¶
AudioStream是所有音频发射对象的基类.AudioStreamPlayer绑定到AudioStream以将PCM数据发送到管理音频驱动程序的AudioServer.
所有音频资源都需要两个基于音频的类:AudioStream和AudioStreamPlayback. 作为数据容器,AudioStream包含资源并将其自身暴露给GDScript.AudioStream引用其自己的内部自定义AudioStreamPlayback, 该AudioStreamPlayback将AudioStream转换为PCM数据.
This guide assumes the reader knows how to create C++ modules. If not, refer to this guide 自定义 C++ 模块.
参考:¶
可以做什么?¶
绑定外部库(如Wwise, FMOD等).
添加自定义音频队列
添加对更多音频格式的支持
创建 AudioStream¶
AudioStream由三个组件组成: 数据容器, 流名称和AudioStreamPlayback朋友类生成器. 音频数据可以通过多种方式加载, 例如使用用于音调发生器的内部计数器, 内部/外部缓冲区, 或文件引用.
某些AudioStream需要是无状态的, 例如从ResourceLoader加载的对象.ResourceLoader加载一次并引用同一对象, 而不管在该特定资源上调用了多少次 load
. 因此, 播放状态必须被包含在AudioStreamPlayback中.
/* audiostream_mytone.h */
#include "core/reference.h"
#include "core/resource.h"
#include "servers/audio/audio_stream.h"
class AudioStreamMyTone : public AudioStream {
GDCLASS(AudioStreamMyTone, AudioStream)
private:
friend class AudioStreamPlaybackMyTone;
uint64_t pos;
int mix_rate;
bool stereo;
int hz;
public:
void reset();
void set_position(uint64_t pos);
virtual