簡體   English   中英

如何讓Unity 3D中的對象保留在場景中並且不會重新創建

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM