Unityではシーン切り替え時に音楽の同期再生を制御
2074 ワード
テスト:Test 1という名前の2つのシーンを新規作成します.senceとTest 2.sence
(1)Test 1に空の物体を新規作成し,その物体にAudioSourceを追加し,音楽ファイルを付与し,その物体をprefabとする.
Test 1にボタンを新規作成し、スクリプトTestを作成します.cs、内容は以下の通りです.
(1)Test 1に空の物体を新規作成し,その物体にAudioSourceを追加し,音楽ファイルを付与し,その物体をprefabとする.
Test 1にボタンを新規作成し、スクリプトTestを作成します.cs、内容は以下の通りです.
private AudioSource music;
private static bool flag = false; //
private AudioCtrl audioCtrl;
private GameObject backMusic;
public GameObject prefabBackMusic;
void Awake()
{
backMusic = GameObject.FindGameObjectWithTag("sound");
if (backMusic == null)
{
backMusic = (GameObject)Instantiate(prefabBackMusic);
}
}
void Start()
{
audioCtrl = new AudioCtrl(); //
music = backMusic.GetComponent().audio;
music.volume = 1.0f;
if (flag)
{
this.GetComponentInChildren().spriteName = "MusicON"; // NGUI
//music.Play();
audioCtrl.IsMute = false; //
}
else
{
this.GetComponentInChildren().spriteName = "MusicOFF";
//music.Stop();
audioCtrl.IsMute = true; //
}
}
void OnClick()
{
// true , true
if (!flag)
{
this.GetComponentInChildren().spriteName = "MusicON";
music.Play();
flag = true;
audioCtrl.IsMute = false;
}
else
{
this.GetComponentInChildren().spriteName = "MusicOFF";
music.Stop();
flag = false;
audioCtrl.IsMute = true;
}
}
上記のスクリプトのAudioCtrlは、次のようなクラスです.// 、
public class AudioCtrl
{
public static bool isMute;
public bool IsMute
{
get { return isMute; }
set { isMute = value; }
}
}
メインシーンでは、音楽オブジェクトのプリセットがシーンに保持されないことに注意してください.loadlevelシーンではDon'tDestroyObject(音楽プリセット)が必要です.Test 2.sence中とTest 1.senceでは同様の音楽制御ボタンを用いる、Testを付与する.csスクリプト.