Revision Difference
Guide_to_Sounds#548345
<cat>Audio.Intro</cat>⤶
<title>Guide to Sounds</title>⤶
⤶
# A beginners guide to sounds⤶
⤶
This guide assumes you've already [created a sound](Importing_and_creating_assets#creatingassets) or [imported a sound](Importing_and_creating_assets#sounds).⤶
⤶
## Adjustable Properties⤶
⤶
In the inspector, you can adjust values like **volume**, **pitch**, and **decibels**. If your sound is supposed to be a screen sound, you will also need to select the **UI** option.⤶
⤶
From here, you can also [upload the sound to asset.party](UploadingAssets).⤶
⤶
<upload src="aa125/8dad92f890b4dd9.png" size="26534" name="image.png" />⤶
⤶
Saving this file via <key>CTRL</key> + <key>S</key> or clicking on Full Recompile will compile both the source sound and the sound event.⤶
⤶
<upload src="aa125/8dad92f97e60b07.png" size="11294" name="image.png" />⤶
<upload src="aa125/8dad92dde4082e1.png" size="3896" name="image.png" />⤶
⤶
## Looping Sounds⤶
⤶
For looping sounds you will have to either:⤶
⤶
- Place loop markers inside your sound file⤶
- Left-click the source sound in the assets browser and select the loop checkbox in the inspector. This will only work with **.wav** and **.mp3** files.⤶
⤶
<upload src="aa125/8dad92dc9a457f6.png" size="9502" name="image.png" />⤶
⤶
## Playing a Sound from Code⤶
⤶
To play the sound in-game, you should use one of the static methods from the [Sound](https://asset.party/api/Sandbox.Sound) class, using the name of the **.sound** asset type without the extension:⤶
⤶
```cs⤶
public override void Spawn()⤶
{⤶
// Plays the sound from an entity's position⤶
Sound.FromEntity("atm_card.insert", this);⤶
⤶
// Plays the sound from a position in the world⤶
Sound.FromWorld("atm_card.insert", new Vector3(0, 0, 0));⤶
⤶
// Plays the sound from a position on your screen, useful for UI interactions⤶
// Make sure your .sound file has "2D" enabled⤶
Sound.FromScreen("atm_card.insert");⤶
}⤶
```⤶
⤶
<note>Sounds can be [predicted](Prediction) - if you're playing a sound in a predicted method such as Simulate you should make sure your logic is predictable, if it isn't you should appropriately wrap it with Prediction.Off otherwise you will hear nothing.</note>