Olá Francisco, tudo bem?
Peço desculpas pela demora em obter um retorno
Vou tentar ajudá-lo com suas dúvidas sobre o código. Vamos lá:
Quando um objeto é marcado com 'Dont Destroy on Load', ele não é destruído quando uma nova cena é carregada. Portanto, o método Start é executado apenas uma vez, quando o objeto é criado. Já o método Awake é executado sempre que o objeto é criado ou recriado, mesmo que a cena não tenha sido recarregada. Portanto, se o objeto já existir na cena, o Awake não será executado novamente.
A ordem em que os objetos executam o código depende do fluxo de execução do Unity. O método Awake é chamado primeiro para todos os objetos da cena, independentemente de terem 'DontDestroyOnLoad' ou não. Em seguida, o método Start é chamado em cada objeto na ordem em que eles foram ativados.
Ao marcar um objeto com 'DontDestroyOnLoad', você garante que ele permaneça ativo e não seja destruído ao carregar uma nova cena. Isso significa que o objeto "Pontuação" marcado com 'DontDestroyOnLoad' terá seu estado preservado entre as cenas, incluindo o valor da pontuação. Se houver outros objetos "Pontuação" na cena que não foram marcados com 'DontDestroyOnLoad', eles serão destruídos quando uma nova cena for carregada. Portanto, apenas o objeto "Pontuação" marcado continuará existindo e mantendo seu estado durante todo o jogo.
Espero ter ajudado, qualquer dúvida, me coloco à disposição! Bons estudos!
Sucesso
Um grande abraço e até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!