Dúvida sobre resoluções de tela
Página 1 de 1
Dúvida sobre resoluções de tela
Olá pessoal, ando tendo dificuldade com a mudança de resolução em meus jogos, tenho um script que permite a mudança de resolução e nível de qualidade, o problema é que a imagem do jogo se comporta diferente em diferentes monitores, num monitor HD Ready (resolução máxima 1366x768) a iluminação do jogo fica normal, em alguns monitores FULL HD (resolução máxima 1920X1080) o jogo apresenta brilho exagerado em geral, podendo também haver problemas de iluminação, em monitores 4K (resolução máxima 3840x2160) ocorrem problemas de iluminação mais graves, as sombras praticamente somem. Notei que na resolução nativa do monitor a imagem normalmente fica ok como no caso do HD Ready (resolução máxima 1366x768), porém em minha tv 4K, mesmo na resolução nativa, ainda há problemas de iluminação. Andei pesquisando e tentando usar umas IAs para me ajudar, mas não deu certo, vou deixar o script aqui, se tiverem dicas ficarei grato.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Configuracoes : MonoBehaviour
{
public int nivelQualidadePadrao = 5;
private static Configuracoes instance;
private Resolution nativeResolution;
void Awake()
{
// Implementação do Singleton
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
// Armazena a resolução nativa do sistema ao iniciar o jogo
nativeResolution = Screen.currentResolution;
// Carrega as configurações salvas ou define as configurações padrão
LoadConfiguracoes();
}
else
{
Destroy(gameObject);
}
}
public void Resolution01()
{
SetResolution(1024, 768);
}
public void Resolution02()
{
SetResolution(1366, 768);
}
public void Resolution03()
{
SetResolution(1280, 720);
}
public void Resolution04()
{
SetResolution(1920, 1080);
}
public void Resolution05()
{
SetResolution(2560, 1440);
}
public void Resolution06()
{
SetResolution(3840, 2160);
}
public void Graficos01()
{
SetQualityLevel(0);
}
public void Graficos02()
{
SetQualityLevel(1);
}
public void Graficos03()
{
SetQualityLevel(2);
}
public void Graficos04()
{
SetQualityLevel(3);
}
public void Graficos05()
{
SetQualityLevel(4);
}
public void Graficos06()
{
SetQualityLevel(5);
}
private void SetResolution(int width, int height)
{
// Muda a resolução para tela cheia, sem bordas, e força a mudança da resolução do sistema operacional
Screen.SetResolution(width, height, FullScreenMode.ExclusiveFullScreen);
Debug.Log($"Resolução definida para: {width}x{height} em modo tela cheia exclusiva");
SaveConfiguracoes();
}
private void SetQualityLevel(int level)
{
QualitySettings.SetQualityLevel(level, true);
Debug.Log($"Nível de qualidade definido para: {level}");
SaveConfiguracoes();
}
private void LoadConfiguracoes()
{
if (PlayerPrefs.HasKey("ResolucaoWidth") && PlayerPrefs.HasKey("ResolucaoHeight"))
{
int width = PlayerPrefs.GetInt("ResolucaoWidth");
int height = PlayerPrefs.GetInt("ResolucaoHeight");
Screen.SetResolution(width, height, FullScreenMode.ExclusiveFullScreen);
Debug.Log($"Resolução carregada das preferências: {width}x{height}");
}
else
{
// Aplica a resolução nativa do monitor ao iniciar o jogo
Screen.SetResolution(nativeResolution.width, nativeResolution.height, FullScreenMode.ExclusiveFullScreen);
Debug.Log($"Resolução nativa configurada para: {nativeResolution.width}x{nativeResolution.height}");
SaveConfiguracoes(); // Salva a resolução padrão definida
}
if (PlayerPrefs.HasKey("NivelQualidade"))
{
int qualidade = PlayerPrefs.GetInt("NivelQualidade");
QualitySettings.SetQualityLevel(qualidade, true);
Debug.Log($"Nível de qualidade carregado das preferências: {qualidade}");
}
else
{
QualitySettings.SetQualityLevel(nivelQualidadePadrao, true); // Configuração padrão
Debug.Log($"Nível de qualidade padrão configurado para: {nivelQualidadePadrao}");
}
}
private void SaveConfiguracoes()
{
int width = Screen.width;
int height = Screen.height;
PlayerPrefs.SetInt("ResolucaoWidth", width);
PlayerPrefs.SetInt("ResolucaoHeight", height);
int qualidade = QualitySettings.GetQualityLevel();
PlayerPrefs.SetInt("NivelQualidade", qualidade);
PlayerPrefs.Save();
Debug.Log("Configurações salvas.");
}
void OnApplicationQuit()
{
// Restaura a resolução nativa do sistema ao sair do jogo
Screen.SetResolution(nativeResolution.width, nativeResolution.height, FullScreenMode.FullScreenWindow);
Debug.Log($"Resolução restaurada para: {nativeResolution.width}x{nativeResolution.height}");
}
}
Re: Dúvida sobre resoluções de tela
Aparentemente o problema era causado ao mudar a resolução do sistema operacional, isso causava brilho exagerado no jogo, então mudei o código para alterar apenas a resolução interna do jogo.
Tópicos semelhantes
» Duvida importante Sobre quando é exibido ANUNCIO NA TELA
» [Dúvida] Toques na tela e UIs
» Dúvidas sobre aparecer imagem na tela
» [Dúvida] - Pequena dúvida sobre o IENumerator..
» [DÚVIDA] Dúvida sobre script e rigidbody
» [Dúvida] Toques na tela e UIs
» Dúvidas sobre aparecer imagem na tela
» [Dúvida] - Pequena dúvida sobre o IENumerator..
» [DÚVIDA] Dúvida sobre script e rigidbody
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos