皆さん、こんにちは。ぶんじゃくです。
しっかり秋らしさが感じられ、また冬の到来をひしひしと感じる今日この頃、いかがお過ごしでしょうか。
さて、今回はUnityで簡単なManagerを作ってみたいと思います。
Unityではシーンを移動しても引き続き残っていてほしいGameObjectがあったりしませんか。
Managerはゲーム全体で管理されるもので、例えばSoundManager(音)等があったりします。
こういうものはシーンごとに作り直すのも面倒ですよね。
さて、また例のごとくサンプルコードから入ります。
しかしその前に、シーンにGameObjectを1つ用意し、
そのGameObjectに以下のスクリプトをアタッチするようにしてください。
サンプルコード
public class SoundManager : MonoBehaviour
{
// SE
public AudioClip sampleSE;
// BGM
public AudioClip sampleBGM;
public AudioSource audioSourceSE;
public AudioSource audioSourceBGM;
public static SoundManager Instance
{
get; private set;
}
void Awake()
{
if (Instance != null)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
}
public void PlaySampleSE()
{
audioSourceSE.PlayOneShot(sampleSE);
}
public void PlaySampleBGM()
{
audioSourceSE.clip = sampleBGM;
audioSourceSE.Play();
}
}
~略~
using UnityEngine.SceneManagement;
~略~
public void OnClickButton()
{
SoundManager.PlaySampleSE();
SoundManager.PlaySampleBGM();
}
最初のコードがSoundManagerにあたり、次のコードが実際の呼び出しになります。
AudioClipには任意の音声データをアタッチしておくのを忘れないでください。
これでシーンが変わっても、SoundManagerから任意の音を鳴らすことができます。
何かの参考になれば幸いです。
それでは今回はこの辺で。さようなら。