[英]How to have an object in Unity 3D that stays in scenes and does not recreate
我正在努力找到一種在Unity 3D中播放背景音樂的好方法。 我希望音樂能夠通過場景加載持續播放。 不要在加載時銷毀很好並且有效,但每次加載相同的場景時,它都會制作另一個音樂游戲對象,因為場景本身中有游戲對象。 我怎樣才能解決我的問題? 我是一個“初學者”(有點),所以我想要我能理解的代碼。
我建議先從像'EazySoundManagerDemo'這樣的資產開始。 它需要一些重構和細化(即它使用3個音頻陣列和3組可訪問性函數,而不是一個帶有AudioPurpose枚舉的集合來增加代碼重用)。
然而,它確實解決了您所遇到的基本問題,並且是使用音頻管理器/層而不是直接從您的GameObjects直接播放音頻的好介紹。 給它一個鏡頭,從中學習,然后調整它或創建自己的音頻管理層。
祝好運!
我建議創建一個audioSource對象,然后為該對象創建一個腳本,並在喚醒函數上執行以下操作:
void Awake() {
DontDestroyOnLoad(this.gameObject);
}
這將使背景音樂在場景之間繼續播放。 有關更多信息,您可以使用Unity有關此功能的文檔。
在團結論壇上的一個問題的幫助下,我想我已經解決了我的問題。 這個問題的鏈接在這里......
https://answers.unity.com/questions/982403/how-to-not-duplicate-game-objects-on-dontdestroyon.html
最佳答案就是我正在使用的答案。
代碼就是這個......
private static Player playerInstance;
void Awake(){
DontDestroyOnLoad(this);
if (playerInstance == null) {
playerInstance = this;
} else {
Destroy(gameObject); // Used Destroy instead of DestroyObject
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.