How to have an object in Unity 3D that stays in scenes and does not recreate

*爱你&永不变心* 提交于 2020-02-02 08:56:33

问题


I’m trying to find a good way to play background music in Unity 3D. I want the music to keep playing consistently through scene loads. Don’t Destroy on load is fine and works, but every time I load the same scene, it makes another music game object because the scene itself has the game object in it. How can I solve my problem? I am a “beginner” (kind of), so I would like code I can understand.


回答1:


I'd hands down recommend starting with an Asset like 'EazySoundManagerDemo'. It needs a little refactoring and refinement (ie it uses 3 arrays of audios with 3 sets of accessibility functions instead of one set with an AudioPurpose enum to increase code-reuse).

It does however solve the basic problem you have and is a good intro to using an audio manager / layer instead of simply playing audio directly from your GameObjects. Give that a shot, learn from it and then adapt it or create your own audio management layer.

Good Luck!




回答2:


I recommend creating an audioSource object, then creating an script for this object and on the awake function do this:

void Awake() {
    DontDestroyOnLoad(this.gameObject);
}

This will make the background music to keep playing between scenes. For more information you could use Unity's documentation about this function.




回答3:


With help from a question on the unity forum, I think I have solved my problem. The link to the question is here...

https://answers.unity.com/questions/982403/how-to-not-duplicate-game-objects-on-dontdestroyon.html

The Best Answer is the one I’m using.

The code is this...

private static Player playerInstance;

void Awake(){
    DontDestroyOnLoad(this);

    if (playerInstance == null) {
        playerInstance = this;
    } else {
        Destroy(gameObject); // Used Destroy instead of DestroyObject
    }
}


来源:https://stackoverflow.com/questions/52285514/how-to-have-an-object-in-unity-3d-that-stays-in-scenes-and-does-not-recreate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!