facebook twitter hatena line email

Unity/Csharp//基本

提供: 初心者エンジニアの簡易メモ
2021年11月12日 (金) 01:56時点におけるAdmin (トーク | 投稿記録)による版 (音の切り替えでブツブツ音がする場合の対応)

移動: 案内検索

SEを鳴らしてみる

  1. GameObjectに名前をつけて(ここではSeTap)AudioSourceをAddComponentする
  2. アサインしたAudioSourceのAudioClipにmp3音源をいれる
  3. 以下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;
    }
}

音量大小

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 bgmSource;
bgmSource.Play();
bgmSource.pitch = 2f;

シーン遷移してもBGMを消さない

GameObjectに以下を追加して、オブジェクトを消さなければ良い。

public class BgmAudioScript : MonoBehaviour
{
    void Start()
    {
            DontDestroyOnLoad(this);
    }
}

音が遅延するとき

  1. Edit/ProjectSettings/Audioを選択
  2. AudioManagerのDSPBufferSizeをBest Latencyに

音素材について

movからmp3へ https://convertio.co/ja/mov-mp3/

mp3を切り出す http://audio-cutter.com/ja/

音の切り替えでブツブツ音がする場合の対応

  1. AudioSourceが同一で、AudioClipのみを切り替えると、ブツブツ音がなる。
  2. 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();
<pre>
参考:https://docs.unity3d.com/jp/current/ScriptReference/Resources.Load.html