2015-09-06 98 views
2

因此,我創建了一個音樂播放器,通過我的所有菜單和故事場景播放音樂而不中斷,但在我的遊戲場景中,我想刪除該音樂。當我的遊戲場景加載時,如何銷燬播放的音樂?如何在新場景加載時銷燬標記爲「DontDestroyOnLoad」的遊戲對象?

這裏是我的音樂腳本:

#pragma strict 

var offsetY : float = 40; 
var sizeX : float = 100; 
var sizeY : float = 40; 

var musicPrefab : Transform; 

function Start() { 

if (!GameObject.FindGameObjectWithTag("MM")) { 
    var mManager = Instantiate (musicPrefab, transform.position, Quaternion.identity); 
    mManager.name = musicPrefab.name; 
    DontDestroyOnLoad (mManager); 
} 

}

回答

3

只要打電話直接摧毀它:

Destroy(mManager);

DontDestroyOnLoad只保護對象從加載新時被銷燬現場。

+0

謝謝!我會在哪裏放置銷燬(mManager);?我試圖把它放在我的playercontroller.cs中沒有做任何事情。當我把它放入另一個.js腳本時,它會說「未知標識符」。有任何想法嗎? :/ –

+0

您需要在某個腳本可以在需要銷燬它時訪問它的某處保留對mManager的引用。我不知道你的項目和代碼是如何構建的,所以我無法知道你需要把它放在什麼位置,或者確切地說如何設置它。 – Almo

+0

感謝您的想法,它的工作! –

1

我創建了一個名爲Destroyer.js的腳本,並將其附加到場景中我不想要音樂的攝像機上。然後在那個腳本中我添加了這段代碼,它不再播放。

function Start() { 

Destroy(gameObject.Find("_MMusic")); 
} 
0

你可以通過調用Destroy(objectname)來直接摧毀對象,就像Almo上面提到的那樣。你可以把它放在同一個函數調用中,它負責改變你不希望音樂播放的場景。