Unity/Csharp/音/基本
提供: 初心者エンジニアの簡易メモ
目次
SEを鳴らしてみる
- GameObjectに名前をつけて(ここではSeTap)AudioSourceをAddComponentする
- アサインしたAudioSourceのAudioClipにmp3音源をいれる
- 以下AudioScriptをオブジェクトに紐づける
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MainScript : MonoBehaviour { public AudioSource sound01; void Start () { sound01 = GameObject.Find("SeTap").GetComponent<AudioSource>(); sound01.Stop (); // sound01.Play (); // BGMの場合はこちら sound01.PlayOneShot(sound01.clip); // SEの場合はこちら(音を重ねることができる) } void Update () { } }
画面表示時に設置したGameObjectが表示されて音が鳴るのを防ぐ方法
seをつけたGameObjectのPlayOnAwakeのチェックを外す
BGMオンオフ
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class AudioScene : MonoBehaviour { Toggle bgmToggle; AudioSource bgmSource; void Start() { bgmToggle = GameObject.Find("BgmToggle").GetComponent<Toggle>(); bgmToggle.onValueChanged.AddListener(delegate { ToggleValueChanged(bgmToggle); }); Debug.Log("bgmToggle.isOn=" + bgmToggle.isOn); bgmSource = GameObject.Find("Bgm").GetComponent<AudioSource>(); bgmSource.mute = !bgmToggle.isOn; } void ToggleValueChanged(Toggle change) { Debug.Log("bgmToggle.isOn=" + bgmToggle.isOn); bgmSource = GameObject.Find("Bgm").GetComponent<AudioSource>(); bgmSource.mute = !bgmToggle.isOn; } }
音量大小
audioSource.volume = 0.5f; // 0~1
音量大小操作
UI/Sliderを用意。
using UnityEngine.UI; Slider bgmSlider; void Start() { bgmSlider = GameObject.Find("BgmSlider").GetComponent<Slider>(); bgmSlider.onValueChanged.AddListener(delegate { SliderValueChanged(bgmSlider); }); // bgmText.text = "First Value : " + bgmSlider.value; Debug.Log("bgmSlider.value=" + bgmSlider.value); } void SliderValueChanged(Slider change) { // bgmText.text = "New Value : " + bgmSlider.value; Debug.Log("bgmSlider.value=" + bgmSlider.value); }
ループ
audioSource.loop = true;
音を遅くしたり速くしたり
AudioSource bgmSource; bgmSource.Play(); bgmSource.pitch = 2f;
シーン遷移してもBGMを消さない
GameObjectに以下を追加して、オブジェクトを消さなければ良い。
public class BgmAudioScript : MonoBehaviour { void Start() { DontDestroyOnLoad(this); } }
音が遅延するとき
- Edit/ProjectSettings/Audioを選択
- AudioManagerのDSPBufferSizeをBest Latencyに
音素材について
movからmp3へ https://convertio.co/ja/mov-mp3/
mp3を切り出す http://audio-cutter.com/ja/
音の切り替えでブツブツ音がする場合の対応
- AudioSourceが同一で、AudioClipのみを切り替えると、ブツブツ音がなる。
- AudioSourceを、それぞれ用意して、切り替えればうまくいくかも。→ やり方がまずいのかうまくいかなかった・・。
他の描画など処理が、重いのが、原因かも。・・
参考:http://blog.livedoor.jp/be_someone/archives/52401691.html
mp3をResoucesからとってきて再生
//Load an AudioClip (Assets/Resources/Audio/audioClip01.mp3) var audioClip = Resources.Load<AudioClip>("Audio/audioClip01"); AudioSource audioSource = GameObject.Find("AudioSource").GetComponent<AudioSource>(); audioSource.clip = audioClip; audioSource.Stop(); audioSource.PlayOneShot(audioSource.clip); audioSource.Play();
参考:https://docs.unity3d.com/jp/current/ScriptReference/Resources.Load.html
ロード処理軽減
Assets下のmp3ファイルのInspectorを開いて、LoadTypeをStreamingへ
参考:https://twitter.com/wannabe2199/status/1512611645738024961
参考:https://twitter.com/Takaaki_Ichijo/status/1512666940934098944
参考:https://goisagi-517.hatenablog.com/entry/2019/07/27/110807