Mudar a densidade da grama pelo script de outra cena
2 participantes
Página 1 de 1
Mudar a densidade da grama pelo script de outra cena
E ai pessoal tudo bem ? Preciso de ajudar com um script que estou trabalhando a um tempo e não consigo resolver um problema, tenho um menu de opções na cena "Opções", esse menu vai ter uma configuração de densidade da grama do terreno, porém o terreno fica na cena "Jogo", eu não estou conseguindo fazer com que tenha efeito na grama mudando de baixa, média ou alta, se alguém puder me ajudar agradeço demais. Segue o script somente do trecho que preciso de ajuda.
- Código:
[Header("UI")]
public TMP_Dropdown detalhamentoB;
[Header("Valores")]
public int detalhamentoGrama;
private Terrain terreno;
void Start()
{
//Detalhamento
if (PlayerPrefs.HasKey("detalhamentoGrama"))
{
detalhamentoGrama = PlayerPrefs.GetInt("detalhamentoGrama");
detalhamentoB.value = detalhamentoGrama;
}
else
{
PlayerPrefs.SetInt("detalhamentoGrama", detalhamentoGrama);
detalhamentoGrama = 1;
detalhamentoB.value = detalhamentoGrama;
}
}
//Void De Salvamento
void SalvarPreferencias()
{
PlayerPrefs.SetInt("detalhamentoGrama", detalhamentoB.value);
AplicarPreferencias();
}
void AplicarPreferencias()
{
detalhamentoGrama = detalhamentoB.value;
switch (detalhamentoTela)
{
case 0:
terreno.detailObjectDensity = 0.3f;
break;
case 1:
terreno.detailObjectDensity = 0.5f;
break;
case 2:
terreno.detailObjectDensity = 1f;
break;
}
}
jeancvo3- Membro
- PONTOS : 1501
REPUTAÇÃO : 17
Idade : 27
Respeito as regras :
Re: Mudar a densidade da grama pelo script de outra cena
não entendi exatamente qual o problema.
voce não esta conseguindo passar a informação de uma cena para outra ?
ou esse:
voce não esta conseguindo passar a informação de uma cena para outra ?
ou esse:
- Código:
terreno.detailObjectDensity = 0.3f;
Re: Mudar a densidade da grama pelo script de outra cena
se o problema for passar informação entre cenas, tu pode simplesmente criar um ScriptableObject, com o script abaixo e usar ele pra passar as informações entre as cenas.
- Código:
[CreateAssetMenu]
public class FloatVariable : ScriptableObject
{
public float Value;
}
Re: Mudar a densidade da grama pelo script de outra cena
Na realidade não trabalhei ainda com ScriptableObject, precisava fazer o terreno receber as linhas de código de acordo com a qualidade que o jogador quiser usar.dutrabr100 escreveu:se o problema for passar informação entre cenas, tu pode simplesmente criar um ScriptableObject, com o script abaixo e usar ele pra passar as informações entre as cenas.
- Código:
[CreateAssetMenu]
public class FloatVariable : ScriptableObject
{
public float Value;
}
Baixo:
- Código:
terreno.detailObjectDensity = 0.3f;
- Código:
terreno.detailObjectDensity = 0.5f;
- Código:
terreno.detailObjectDensity = 1f;
jeancvo3- Membro
- PONTOS : 1501
REPUTAÇÃO : 17
Idade : 27
Respeito as regras :
Re: Mudar a densidade da grama pelo script de outra cena
aaaahhhjeancvo3 escreveu:Na realidade não trabalhei ainda com ScriptableObject, precisava fazer o terreno receber as linhas de código de acordo com a qualidade que o jogador quiser usar.dutrabr100 escreveu:se o problema for passar informação entre cenas, tu pode simplesmente criar um ScriptableObject, com o script abaixo e usar ele pra passar as informações entre as cenas.
- Código:
[CreateAssetMenu]
public class FloatVariable : ScriptableObject
{
public float Value;
}
Baixo:Médio:
- Código:
terreno.detailObjectDensity = 0.3f;
Alto
- Código:
terreno.detailObjectDensity = 0.5f;
- Código:
terreno.detailObjectDensity = 1f;
Agora que notei, tu já esta salvando o valor em playerprefs, o problema no seu script é outro.
nesse caso, tu tem que ter 2 scripts.
um que vai ser responsável pela parte de salvar o valor na primeira cena. e o outro vai recuperar esse valor do PlayerPrefs e vai aplicar no terrain na outra cena.
Re: Mudar a densidade da grama pelo script de outra cena
dutrabr100 escreveu:aaaahhhjeancvo3 escreveu:Na realidade não trabalhei ainda com ScriptableObject, precisava fazer o terreno receber as linhas de código de acordo com a qualidade que o jogador quiser usar.dutrabr100 escreveu:se o problema for passar informação entre cenas, tu pode simplesmente criar um ScriptableObject, com o script abaixo e usar ele pra passar as informações entre as cenas.
- Código:
[CreateAssetMenu]
public class FloatVariable : ScriptableObject
{
public float Value;
}
Baixo:Médio:
- Código:
terreno.detailObjectDensity = 0.3f;
Alto
- Código:
terreno.detailObjectDensity = 0.5f;
- Código:
terreno.detailObjectDensity = 1f;
Agora que notei, tu já esta salvando o valor em playerprefs, o problema no seu script é outro.
nesse caso, tu tem que ter 2 scripts.
um que vai ser responsável pela parte de salvar o valor na primeira cena. e o outro vai recuperar esse valor do PlayerPrefs e vai aplicar no terrain na outra cena.
Pois é cara exatamente como pensei, coloquei a parte de recuperar os dados no script GameController que fica na cena jogo mas mesmo assim não funciona, da esse erro:
NullReferenceException: Object reference not set to an instance of an object
GameController.Detalhamento () (at Assets/Scripts/Diversos/GameController.cs:124)
GameController.Start () (at Assets/Scripts/Diversos/GameController.cs:37)
jeancvo3- Membro
- PONTOS : 1501
REPUTAÇÃO : 17
Idade : 27
Respeito as regras :
Re: Mudar a densidade da grama pelo script de outra cena
Isso não faz sentido, provavelmente tu deve ter esquecido de declarar alguma variável, PlayerPrefs é fácil de usar, não tem como dar esse erro.
Quando tu adicionou ele no seu script o que mais tu adicionou ? tipo tu adicionou uma variavel de Terrain ? porque se sim o erro pode estar nela, você pode ter esquecido de declarar.
- Código:
using UnityEngine;
public class Example : MonoBehaviour
{
public void SetFloat(string KeyName, float Value)
{
PlayerPrefs.SetFloat(KeyName, Value);
}
public float GetFloat(string KeyName)
{
return PlayerPrefs.GetFloat(KeyName);
}
}
Quando tu adicionou ele no seu script o que mais tu adicionou ? tipo tu adicionou uma variavel de Terrain ? porque se sim o erro pode estar nela, você pode ter esquecido de declarar.
Re: Mudar a densidade da grama pelo script de outra cena
Sim mano consegui agora, estava esquecendo de inicializar o terreno, obrigado pela ajuda!dutrabr100 escreveu:Isso não faz sentido, provavelmente tu deve ter esquecido de declarar alguma variável, PlayerPrefs é fácil de usar, não tem como dar esse erro.
- Código:
using UnityEngine;
public class Example : MonoBehaviour
{
public void SetFloat(string KeyName, float Value)
{
PlayerPrefs.SetFloat(KeyName, Value);
}
public float GetFloat(string KeyName)
{
return PlayerPrefs.GetFloat(KeyName);
}
}
Quando tu adicionou ele no seu script o que mais tu adicionou ? tipo tu adicionou uma variavel de Terrain ? porque se sim o erro pode estar nela, você pode ter esquecido de declarar.
jeancvo3- Membro
- PONTOS : 1501
REPUTAÇÃO : 17
Idade : 27
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Mudar sprite em outra cena
» Mudar ícone do jogo pelo script
» como mudar a qualidade do ambient occlusion pelo script?
» Acesso a scripts de outra cena
» Mudar a densidade de Pixels na tela
» Mudar ícone do jogo pelo script
» como mudar a qualidade do ambient occlusion pelo script?
» Acesso a scripts de outra cena
» Mudar a densidade de Pixels na tela
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos