Speakers & shaped audio¶
A plain 3D sound in Unity is omnidirectional — equally loud in every direction, only quieter with distance. Real speakers project: a horn throws sound forward in a cone, a PA fills a room, and both sound muffled when you're off to the side or behind them. The Speaker component gives you that shape.
Add a Speaker¶
Put a Speaker on any object (Add Component ▸ Social Scape/Speaker), assign a clip, and pick a field shape.
Design the field right in the scene — the gizmos show it, and selecting the Speaker gives you drag handles for the
range and cone angle. Aim a cone by rotating the object (it fires down the object's forward / +Z).
| Shape | What it does | Use it for |
|---|---|---|
| Sphere | Omni — audible in a sphere out to Range. (Same as a normal 3D sound.) | Ambience, a boombox |
| Cone | Directional — full volume within the Inner Angle, fading to Outer Volume by the Outer Angle. | A horn, a stage PA, a directional announcement |
| Box | Fills an oriented Box Size, soft at the walls (Edge Falloff). | A PA covering a room / zone |
Origin Offset moves where the sound emanates from (the tip of the cone / centre of the box), so you can place the Speaker object anywhere and still emit from the grille.
Muffle¶
Leave Muffle Off Axis on and the sound is low-passed (dulled) as you move off-axis or outside the shape — so a directional speaker reads as projecting away from you, not merely turned down. That's what sells "realistic speaker."
How it layers with volume¶
A Speaker's loudness is a clean stack, so nothing fights:
what you hear = Base Volume × shape (cone/box) × Speaker.SetVolume (script) × your per-speaker slider
…and the World audio channel (Settings) sits on top of all speakers at once.
Unity still positions the sound (you hear where it is); the shape only decides how loud in each direction.
Voice speakers & voice zones¶
Route player voice through the world — a radio, a PA, a team channel — with two no-code components.
Voice Speaker (a radio / PA prop)¶
Add Voice Speaker (Social Scape/Voice Speaker) to a prop and set a Channel; anyone talking on that channel comes
out of this prop, positioned in 3D with its own falloff and (optionally) the same directional cone/box shape as a
Speaker. Turn on Radio Filter for the band-pass telephone / walkie-talkie timbre.
| Field | What it does |
|---|---|
channelId |
The voice channel this prop plays (can't be proximity — that's reserved for real mouths). |
maxDistance |
How far the prop's voice carries (m). Default 20. |
radioFilter |
Band-pass the voice for a radio / PA timbre. |
field |
Optional directional shape (Cone / Box). |
Voice Speaker is the no-code form of Voice.RouteToSource(channelId, gameObject). To also hear the talker's real
mouth (not only through the radio), the channel must be dual (below).
Voice Zone (a room channel)¶
Add Voice Zone (Social Scape/Voice Zone) — a geometric area (Box / Sphere, no collider needed) that puts everyone
inside onto a voice channel: a team radio, a party chat, a stage broadcast, a global announcer.
| Field | What it does |
|---|---|
channelId |
The channel players in the zone join. |
kind |
Team / Party / Broadcast / Global. |
mode |
TalkAndListen or ListenOnly. |
dual |
Also carry talkers on proximity, so their real mouth is heard too (pairs with a Voice Speaker prop). |
priority |
When zones overlap, the highest wins. |
shape / size / radius |
The Box or Sphere area. |
Team radio
A Voice Zone (channelId = "radio-red", kind = Team, dual on) over the red team's area, plus a Voice
Speaker tuned to radio-red (with radioFilter) on each player's handheld radio prop — teammates hear each other
both in person and over the radio.
Video Speakers project a screen's audio and can be made directional the same way — see Video players.
Wire your own volume slider¶
You build the volume UI yourself — the same way you'd wire any control (a play button, a seek bar). Two server-authoritative calls do the work, so a change is in sync for everyone in the instance:
- A video's audio —
Video.SetVolume("screen", v)sets the video's volume, and every Video Speaker connected to that screen moves together (they all play the one video). So a single slider controls the whole screen's sound, no matter how many speakers you've placed around it:
// UI Slider (0..1) → the video's volume — all of its speakers at once
void OnVideoVolume(float v) {
Video.SetVolume("screen", v);
}
- A standalone Speaker —
Speaker.SetVolume("bell", v)does the same for a Speaker's clip.
Mix them under one slider — one handler can drive a video and any independent Speakers together, your choice of which sources it covers:
void OnMasterVolume(float v) {
Video.SetVolume("screen", v); // the screen + all of its speakers
Speaker.SetVolume("ambient-1", v);
Speaker.SetVolume("ambient-2", v);
}
The directional shape on each speaker still applies on top — the slider sets the level, each speaker keeps its cone/box. See Speaker API and Video players.
Per-player volume¶
Every Speaker and Video Speaker exposes a per-player volume — a listener can turn an individual speaker or video up or down for themselves, on top of the global Audio channel sliders in Settings. It's personal and never affects what anyone else hears.
Limits¶
To keep worlds comfortable, a Speaker's Range is capped (see Rules & limits); an over-range speaker is clamped when your world loads (you'll see a warning at upload). Speakers also count toward the world audio-source cap.
Design the cone visually
Select the Speaker and drag the scene handles: the ring at the end sets Range, the dots on the cone rim set the Inner and Outer angles, and rotating the object aims it. The filled gizmo previews the field as you go.
Component class names (for scripts and search): SSSpeaker, AudioField.