-
Notifications
You must be signed in to change notification settings - Fork 8
WorldAudio Limitations
Important limitations of the WorldAudio emitter management system and why they exist.
The WorldAudio system only works with Unity-based video players (e.g., Unity VideoPlayer, VRC Unity Video Player). It does not work with AVPro Video Player or other third-party video players.
Why: WorldAudio manages AudioSource components directly. AVPro bypasses Unity's audio pipeline and outputs audio through its own system, making it invisible to WorldAudio.
Workaround: Use Unity-based video players. For AVPro, use a separate audio source component on the same GameObject and configure it manually. See WorldAudio Limits Reference for details.
Once an AudioSource is registered with WorldAudio, you should not control it directly from your code. WorldAudio manages play/pause/culling state based on importance and privacy.
Why: WorldAudio calculates importance scores and decides which AudioSources should be active. Directly setting AudioSource.Play() or AudioSource.Stop() conflicts with WorldAudio's management.
Workaround: Use AudioSourceStateController (on the same GameObject) to control play/pause/stop. For manual control, do not register the AudioSource with WorldAudio. See WorldAudio Limits Reference for details.
VRChat imposes platform limits on active audio sources. See WorldAudio Limits Reference for the full table and how WorldAudio manages these limits.
- WorldAudio Limits Reference — technical reference for all limits
- WorldAudio-Subsystem — full system details
- WorldAudioController — controller settings
- OccludedEmitter — per-emitter lifecycle
- Architecture
- Occlusion
- Voice Directionality
- Height Scaling
- Audio Processing Pipeline
- Private Voice Channels
- WorldAudio Subsystem
- WorldAudio Limitations
- Set Up Occlusion
- Set Up Voice Channels
- Set Up Reverb
- Set Up Height Scaling
- Set Up Voice Directionality
- Set Up Microphone
- Set Up WorldAudio Emitters
- Enable Debug Mode
- Tutorial #1: Custom Voice Override Zone
- Tutorial #2: Private Voice Channels
- Tutorial #3: Setting Up World Audio
- PlayerAudioController
- PlayerAudioOverride
- PlayerAudioOverrideList
- PlayerAudioView
- PlayerAudioConfigurationModel
- SyncedPlayerAudioConfigurationModel
- VoiceUtils
- IgnoredPlayers
- AudioObstacle
- DefaultPlayerOcclusion
- NullPlayerOcclusion
- PlayerOcclusionStrategy
- Privacy Channel Reference
- AdjustableGain
- DynamicPrivacy
- PickupMicrophone — MVC microphone system with MicModel/MicController/MicView
- VoiceOverrideTriggerZone
- VoiceOverrideRoom