Música contínua mais transições.
3 participantes
Página 1 de 1
Música contínua mais transições.
Bem eu tenho um Script do vídeo:
Que a função dele é manter a continuidade da musica entra as fazes e troca a musica quando cegar em uma determinada fase.
Mas ele não ta funcionando pois ele so toca 1 segundo e para.
E so toca se eu por todos os espaços a mesma musica. Mas ais fica a mesma musica en todas as cenas.
Alguém sabe como arrumar isso?
Que a função dele é manter a continuidade da musica entra as fazes e troca a musica quando cegar em uma determinada fase.
Mas ele não ta funcionando pois ele so toca 1 segundo e para.
E so toca se eu por todos os espaços a mesma musica. Mas ais fica a mesma musica en todas as cenas.
Alguém sabe como arrumar isso?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Music_Controller : MonoBehaviour
{
private static Music_Controller instance;
public AudioSource BGM;
public AudioClip track0;
public AudioClip track1;
public AudioClip track2;
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(instance);
}
else
{
Destroy(gameObject);
}
}
void Update()
{
if (SceneManager.GetActiveScene().buildIndex >= 0 && SceneManager.GetActiveScene().buildIndex < 0) ;
{
if (BGM.clip != track0)
{
changeBGM(track0);
}
}
if (SceneManager.GetActiveScene().buildIndex >= 1 && SceneManager.GetActiveScene().buildIndex < 4) ;
{
if (BGM.clip != track1)
{
changeBGM(track1);
}
}
if (SceneManager.GetActiveScene().buildIndex >= 5 && SceneManager.GetActiveScene().buildIndex < 6) ;
{
if (BGM.clip != track2)
{
changeBGM(track1);
}
}
}
public void changeBGM(AudioClip music)
{
BGM.Stop();
BGM.clip = music;
BGM.Play();
}
}
Re: Música contínua mais transições.
Oi, creio que o motivo seja o Update, o Update do seu código executa a cada Frame, então a cada frame ele vai verificar em qual cena está e ele vai chamar o changeBGM, que por sua vez vai parar a musica e vai toca-la novamente.
Uma forma simples de resolver isso é a seguinte, estou pelo celular, então vou apenas explicar.
Primeiro vou criar uma variável global, tipo int, chamarei de lastscene, por padrão darei a ela um valor que seja maior do que o maior index de scene que meu jogo possui.
Dentro do index primeiro terei um IF que irá comparar esse valor com a minha scene atual.
If(lastscene != sceneatual)
Ai dentro desse if, eu vou fazer a lógica de mudança de faixa, e também mudarei a minha variável lastscene.
Uma forma simples de resolver isso é a seguinte, estou pelo celular, então vou apenas explicar.
Primeiro vou criar uma variável global, tipo int, chamarei de lastscene, por padrão darei a ela um valor que seja maior do que o maior index de scene que meu jogo possui.
Dentro do index primeiro terei um IF que irá comparar esse valor com a minha scene atual.
If(lastscene != sceneatual)
Ai dentro desse if, eu vou fazer a lógica de mudança de faixa, e também mudarei a minha variável lastscene.
Última edição por dutrabr100 em Seg Out 17, 2022 7:57 am, editado 1 vez(es)
Re: Música contínua mais transições.
E esses teus IF's estão meio estranhos.
Bora olhar eles...
Como um numero pode ser >= 0 and < 0 ao mesmo tempo ??? Impossível...
>= 1 and < 4: esse faz sentido, possíveis trues: 1, 2, 3.
>= 5 and < 6: esse não faz sentido, tem que ser maior ou igual a 5, mas menor que 6, o único true possível é 5, então só bota um == 5 dentro do if...
Bora olhar eles...
Como um numero pode ser >= 0 and < 0 ao mesmo tempo ??? Impossível...
>= 1 and < 4: esse faz sentido, possíveis trues: 1, 2, 3.
>= 5 and < 6: esse não faz sentido, tem que ser maior ou igual a 5, mas menor que 6, o único true possível é 5, então só bota um == 5 dentro do if...
Re: Música contínua mais transições.
Bem eu não consigo entender muito bem isso do If(lastscene != sceneatual)dutrabr100 escreveu:E esses teus IF's estão meio estranhos.
Bora olhar eles...
Como um numero pode ser >= 0 and < 0 ao mesmo tempo ??? Impossível...
>= 1 and < 4: esse faz sentido, possíveis trues: 1, 2, 3.
>= 5 and < 6: esse não faz sentido, tem que ser maior ou igual a 5, mas menor que 6, o único true possível é 5, então só bota um == 5 dentro do if...
Mas com relação aos If's se entendi direito fica assim então:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Music_Controller : MonoBehaviour
{
private static Music_Controller instance;
public AudioSource BGM;
public AudioClip track0;
public AudioClip track1;
public AudioClip track2;
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(instance);
}
else
{
Destroy(gameObject);
}
}
public void Update()
{
if (SceneManager.GetActiveScene().buildIndex == 0) ;
{
if (BGM.clip != track0)
{
changeBGM(track0);
}
}
if (SceneManager.GetActiveScene().buildIndex >= 1 && SceneManager.GetActiveScene().buildIndex < 4) ;
{
if (BGM.clip != track1)
{
changeBGM(track1);
}
}
if (SceneManager.GetActiveScene().buildIndex == 5) ;
{
if (BGM.clip != track2)
{
changeBGM(track1);
}
}
}
public void changeBGM(AudioClip music)
{
BGM.Stop();
BGM.clip = music;
BGM.Play();
}
}
Re: Música contínua mais transições.
cara, sei lá, tu ja pensou em largar esse script de mão e apenas por um audioSource com o audioClip que tu quer tocar em cada cena? tipo, marca a opção play on awake, põe esse audioSource em um objeto que não tenha o don't destroy e só vai man, n precisa ficar complicando o básico
Fluttershy28- Avançado
- PONTOS : 2702
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Re: Música contínua mais transições.
Fica horrível pois a musica é contada a bruscamente e se não tiver o a função de mudar de audio fica a mesma musica entodas as senas.Fluttershy28 escreveu:cara, sei lá, tu ja pensou em largar esse script de mão e apenas por um audioSource com o audioClip que tu quer tocar em cada cena? tipo, marca a opção play on awake, põe esse audioSource em um objeto que não tenha o don't destroy e só vai man, n precisa ficar complicando o básico
E se não destruir o objeto ele toca duas musicas ao mesmo tempo.
Re: Música contínua mais transições.
como eu disse, a musica so fica a mesma em todas as cenas pq vc não ta trocando o audioclip, ou vc ta deixando o audiosource em um objecto com a função Don't Destroy sendo chamada
Fluttershy28- Avançado
- PONTOS : 2702
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Fluttershy28- Avançado
- PONTOS : 2702
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Fluttershy28- Avançado
- PONTOS : 2702
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Re: Música contínua mais transições.
Cara vc ja leu o Post pois eu ja expliquei oque tava acontecendo e eu so sei o vídeo.Fluttershy28 escreveu:como eu disse, a musica so fica a mesma em todas as cenas pq vc não ta trocando o audioclip, ou vc ta deixando o audiosource em um objecto com a função Don't Destroy sendo chamada
E ta dando erro então isso significa que algo foi mudado entre esses 2 anos des que o vídeo foi feito.
E eu ja tentei varias vezes ja ate fiz um que era exatamente igual e dava o mesmo erro.
Re: Música contínua mais transições.
bem, se tu realmente quiser usar o script isso deve resolver
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
public class Music_Controller : MonoBehaviour
{
private static Music_Controller instance;
public AudioSource BGM;
public AudioClip [] tracks;
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(instance);
}
else
{
Destroy(gameObject);
}
}
public void Update()
{
int sceneIndex = SceneManager.GetActiveScene().buildIndex;
if (sceneIndex == 0)
{
if (BGM.clip != tracks[0])
{
changeBGM(tracks[0]);
}
}
if (sceneIndex >= 1 && sceneIndex < 5)
{
if (BGM.clip != tracks[1])
{
changeBGM(tracks[1]);
}
}
if (sceneIndex == 5)
{
if (BGM.clip != tracks[2])
{
changeBGM(tracks[2]);
}
}
}
public void changeBGM(AudioClip music)
{
BGM.Stop();
BGM.clip = music;
BGM.Play();
}
}
Fluttershy28- Avançado
- PONTOS : 2702
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Re: Música contínua mais transições.
Agora sim a transição ficou boa e o áudio também toca corretamente. Obrigado.Fluttershy28 escreveu:bem, se tu realmente quiser usar o script isso deve resolver
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
public class Music_Controller : MonoBehaviour
{
private static Music_Controller instance;
public AudioSource BGM;
public AudioClip [] tracks;
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(instance);
}
else
{
Destroy(gameObject);
}
}
public void Update()
{
int sceneIndex = SceneManager.GetActiveScene().buildIndex;
if (sceneIndex == 0)
{
if (BGM.clip != tracks[0])
{
changeBGM(tracks[0]);
}
}
if (sceneIndex >= 1 && sceneIndex < 5)
{
if (BGM.clip != tracks[1])
{
changeBGM(tracks[1]);
}
}
if (sceneIndex == 5)
{
if (BGM.clip != tracks[2])
{
changeBGM(tracks[2]);
}
}
}
public void changeBGM(AudioClip music)
{
BGM.Stop();
BGM.clip = music;
BGM.Play();
}
}
Fluttershy28- Avançado
- PONTOS : 2702
REPUTAÇÃO : 52
Idade : 27
Áreas de atuação : Modelagem, Animação, Texturização, Design
Respeito as regras :
Tópicos semelhantes
» [DÚVIDA] APERTAR 2 VAI PRA PRÓXIMA MÚSICA, APERTAR 1 VOLTA A MÚSICA ANTERIOR
» Não tá dando mais Bake. O que pode ser?Não aparece mais as áreas em azul em
» Como criar um sistema de papeis que podem ser lidos!?
» Rotação continua de objeto 3D
» Transições de Animações de Sprites
» Não tá dando mais Bake. O que pode ser?Não aparece mais as áreas em azul em
» Como criar um sistema de papeis que podem ser lidos!?
» Rotação continua de objeto 3D
» Transições de Animações de Sprites
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos