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.

AudioStreamPlayback

继承: RefCounted < Object

派生: AudioStreamPlaybackInteractive, AudioStreamPlaybackPlaylist, AudioStreamPlaybackPolyphonic, AudioStreamPlaybackResampled, AudioStreamPlaybackSynchronized

播放音频的元类。

描述

可以播放、循环播放、暂停滚动播放音频。有关用法,请参阅 AudioStreamAudioStreamOggVorbis

教程

方法

int

_get_loop_count() virtual const

Variant

_get_parameter(name: StringName) virtual const

float

_get_playback_position() virtual const

bool

_is_playing() virtual const

int

_mix(buffer: AudioFrame*, rate_scale: float, frames: int) virtual

void

_seek(position: float) virtual

void

_set_parameter(name: StringName, value: Variant) virtual

void

_start(from_pos: float) virtual

void

_stop() virtual

void

_tag_used_streams() virtual

int

get_loop_count() const

float

get_playback_position() const

AudioSamplePlayback

get_sample_playback() const

bool

is_playing() const

PackedVector2Array

mix_audio(rate_scale: float, frames: int)

void

seek(time: float = 0.0)

void

set_sample_playback(playback_sample: AudioSamplePlayback)

void

start(from_pos: float = 0.0)

void

stop()


方法说明

int _get_loop_count() virtual const 🔗

可覆盖的方法。应该返回该音频流已经循环了多少次。大多数内置播放始终返回 0


Variant _get_parameter(name: StringName) virtual const 🔗

按名称返回播放参数的当前值(请参阅 AudioStream._get_parameter_list())。


float _get_playback_position() virtual const 🔗

可覆盖的方法。应返回音频流的当前进度,单位为秒。


bool _is_playing() virtual const 🔗

可覆盖的方法。如果该播放处于活动状态并正在播放其音频流,则应返回 true


int _mix(buffer: AudioFrame*, rate_scale: float, frames: int) virtual 🔗

覆盖该方法以自定义音频流的混合方式。即使播放未激活,也会调用该方法。

注意:在 GDScript 或 C# 中覆盖该方法没有用。只有 GDExtension 可以利用它。


void _seek(position: float) virtual 🔗

覆盖该方法以自定义在给定的 position 处查找该音频流时发生的情况,例如通过调用 AudioStreamPlayer.seek()


void _set_parameter(name: StringName, value: Variant) virtual 🔗

按名称设置播放参数的当前值(请参阅 AudioStream._get_parameter_list())。


void _start(from_pos: float) virtual 🔗

覆盖该方法以自定义在给定位置开始播放时发生的情况,例如通过调用 AudioStreamPlayer.play() 覆盖。


void _stop() virtual 🔗

覆盖该方法以自定义播放停止时发生的情况,例如通过调用 AudioStreamPlayer.stop() 覆盖。


void _tag_used_streams() virtual 🔗

可覆盖的方法。如果播放处于活动状态并且 AudioServer.set_enable_tagging_used_audio_streams() 已被设置为 true,则每当混合音频流时调用。编辑器插件可以使用该方法以“标记”音频流中的当前位置并将其显示在预览中。


int get_loop_count() const 🔗

返回音频流已循环的次数。


float get_playback_position() const 🔗

返回音频流中的当前位置,单位为秒。


AudioSamplePlayback get_sample_playback() const 🔗

实验性: 未来版本中可能会修改或移除该方法。

返回与该 AudioStreamPlayback 相关联的、用于播放该流的音频样本的 AudioSamplePlayback,。


bool is_playing() const 🔗

音频流正在播放时,返回 true


PackedVector2Array mix_audio(rate_scale: float, frames: int) 🔗

从当前位置开始,以 rate_scale 的速率混合音频流中最多 frames 帧音频,并推进流的位置。

返回一个PackedVector2Array,其中每个元素对应包含每个帧的左右声道音量。

注意:可能返回少于请求的帧数,请确定使用返回值的size。


void seek(time: float = 0.0) 🔗

跳转到音频流中给定的时间点 time,单位为秒。


void set_sample_playback(playback_sample: AudioSamplePlayback) 🔗

实验性: 未来版本中可能会修改或移除该方法。

AudioSamplePlayback 与该 AudioStreamPlayback 关联以播放该流的音频样本。


void start(from_pos: float = 0.0) 🔗

从给定的位置 from_pos 开始播放音频流,单位为秒。


void stop() 🔗

停止音频流。